Я новичок в Python
и matplotlib
, и я недавно ссылался на THIS, чтобы обновить мой участок tripcolor
. При следующем подготовки данныхset_array() в ошибке tripcolor?
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.tri as tri
import math
r = np.zeros((100,100))
t = np.zeros((100,100))
for i in range(0,100):
for j in range(0,100):
r[i,j]=i
t[i,j]=2*math.pi*j/100
x=r*np.cos(t)
y=r*np.sin(t)
z=r*r
xf=x.flatten()
yf=y.flatten()
zf=z.flatten()
triang = tri.Triangulation(xf,yf)
Если я использую tripcolor
, как предполагается,
# Works well
p = plt.tripcolor(triang, zf)
correct figure появляется. Но, если я пытаюсь обновить после создания tripcolor
,
# Not working well
p = plt.tripcolor(triang, xf)
p.set_array(zf)
тогда, wrong figure появляется. Оба xf
и zf
имеют одинаковые размеры.
Что я делаю неправильно? В чем причина проблемы и как ее избежать?
Большое спасибо заранее.
================================================================================================================================== ===========
Update
Спасибо всем. Я на самом деле решил сам.
Ключа в том, что мне нужно назначить цвета для каждой области, которая находится под контролем shading
аргумента и значение по умолчанию для tripcolor
является 'flat'
, который, цвета для каждой вершины. Итак, когда я рисую первый рисунок, мне нужно убедиться, что затенение 'gouraud'
, которое назначает цвет для каждой области.
Так,
p = plt.tripcolor(triang, xf, shading='gouraud')
p.set_array(zf)
работает, как я предполагал.
так как связанный пост был вам полезен, вы могли бы (и должны?) Поддержать ответ, который там размещен ... даже если это только помогло вам, но не решило вашу проблему. – rll
@ rll Я сделал это, но, поскольку моя репутация низкая, моя обратная связь не показана другим людям, мне сказали. –
Извините, мой плохой тогда :) Я читал ваш вопрос с большим вниманием, попробовал ли вы перерисовать после установки массива? – rll