我似乎无法解决这个问题。我有多组具有相同x,y点的数据。我进行了Delaunay三角剖分并使用tripcolor绘图。我在这个论坛上读到,要将几组数据绘制到同一图中,我需要指定轴和其他内容,但在这里(matplotlib入门者,抱歉)似乎不起作用。我的代码:
import matplotlib.pyplot as plt
import matplotlib.tri as tri
from pylab import genfromtxt
data=genfromtxt("momentAF.txt")
data2=genfromtxt("momentZZ.txt")
x = data[:,0]
y = data[:,1]
z1 = data[:,4]
z2 = data2[:,4]
circle=plt.Circle((0,0),1,color="black",fill=False)
triang = tri.Triangulation(x, y)
ax = plt.subplot(111)
ax.set_aspect('equal')
ax.add_artist(circle)
ax.tripcolor(triang, z2**2, shading='gouraud', cmap='Greens')
ax.tripcolor(triang, z1**2, shading='gouraud', cmap='Reds')
#plt.colorbar()
plt.title("ST, G'=-0.0")
任何帮助都非常感激,谢谢。
编辑: 我想要的大致示例:
![相图](https://istack.dev59.com/bpn4W.webp)
my_cmap = cm.get_cmap("Greens")
my_cmap2 = cm.get_cmap("Reds")
my_cmap.set_under('w',alpha=0)
my_cmap2.set_under('w',alpha=0)
然后
ax.tripcolor(triang, z1**2, shading='gouraud', cmap=my_cmap, vmin=0.01)
ax.tripcolor(triang, z2**2, shading='gouraud', cmap=my_cmap2, vmin=0.01)
但是它仍然只显示z1非零的区域(即我的_cmap2中应该透明的区域被白色覆盖掉了)。我还尝试使用掩蔽数组,
masked = np.ma.masked_where(z1<.1,z3**2)
masked2 = np.ma.masked_where(z2<.1,z4**2)
ax.tripcolor(triang, masked, shading='gouraud', cmap="Greens")
ax.tripcolor(triang, masked2, shading='gouraud', cmap="Reds")
尽管如此,仍然毫无结果。
data
和data2
的数组,而不是链接到其他小文件,这对我们来说会更容易处理。 - cphlewisset_under
函数改变了cmap的lut属性的alpha值,但是似乎TriMesh将其覆盖为传递给tripcolor
的alpha值,如果没有传递,则默认为1。 - Yanntripcolor
。只有在给出x,y
坐标时,它才接受mask
参数。你必须在Triangulation
对象上应用掩码(这实际上是tripcolor
所做的,它直接将x,y,masked
传递给Triangulation
构造函数),请参见我的编辑。 - Yann