Estou tentando atualizar o ZData de um gráfico bar3:
z = [[1, 2]; [3, 4]];
z_new = [[1, 2]; [3, 3]];
h = bar3(z);% works fine until here
set(h, 'ZData', z_new);
Eu então recebo os seguintes erros:
Warning: Error creating or updating Surface
Error in value of property ZData
Array is wrong shape or size
Warning: Error creating or updating Surface
Error in value of property ZData
Array is wrong shape or size
Eles não travam o programa, mas os dados do gráfico existente são excluídos em vez de sobrescritos.
Não entendo por que isso acontece, já que as matrizes são obviamente do mesmo tamanho.
Eles não são do mesmo tamanho.
bar3
cria umaZData
entrada personalizada a partir doz
argumento fornecido. Exibindo aZData
entrada paraz=[[1, 2]; [3, 4]];
Você poderia atualizar
ZData
construindo uma matriz no formato acima e preenchendoz_new
os dados nos locais corretos e deveria funcionar. Se sua intenção é apenas substituir o gráfico antigo, é melhor usarh = bar3(z_new);
A resposta de Pevan explica por que você não pode definir diretamente
ZData
usando a mesma matriz na qual inseririabar3
, mas aqui está um exemplo de como você pode manipularz_new
usando uma função auxiliar para definirZData
diretamente sem precisar redesenhar um novobar3
objeto.Veja os comentários para mais detalhes de cada etapa: