如何解决Python Pyx:删除密度图中重复的颜色条
我想在一个Python Pyx图中具有多个密度图。
我可以这样做以得到两个密度图:
问题:如何删除不必要的重复色条?
from pyx import *
f = canvas.canvas()
re_min = -2
re_max = 0.5
im_min = -1.25
im_max = 1.25
gridx = 100
gridy = 100
max_iter = 10
re_step = (re_max - re_min) / gridx
im_step = (im_max - im_min) / gridy
d = []
for re_index in range(gridx):
re = re_min + re_step * (re_index + 0.5)
for im_index in range(gridy):
im = im_min + im_step * (im_index + 0.5)
c = complex(re,im)
n = 0
z = complex(0,0)
while n < max_iter and abs(z) < 2:
z = (z * z) + c
n += 1
d.append([re,im,n])
g1 = graph.graphxy(height=8,width=8,x=graph.axis.linear(min=re_min,max=re_max,title=r"$\Re(c)$"),y=graph.axis.linear(min=im_min,max=im_max,title=r'$\Im(c)$'))
g1.plot(graph.data.points(d,x=1,y=2,color=3,title="iterations"),[graph.style.density(gradient=color.rgbgradient.Rainbow)])
f.insert(g1)
g2 = graph.graphxy(height=8,xpos=g1.xpos+14.0,title=r'$\Im(c)$'))
g2.plot(graph.data.points(d,[graph.style.density(gradient=color.rgbgradient.Rainbow)])
f.insert(g2)
f.writePDFfile()
解决方法
颜色条称为关键图,它是浓度样式的属性。您可以将其设置为“无”,即
graph.style.density(gradient=color.rgbgradient.Rainbow,keygraph=None)
不会在内部删除(自动)键图,但会阻止其输出。
您还可以自己设置关键图,此外,还可以设置此关键图的色轴。它也是样式的一个属性,默认情况下它是一个简单的线性轴,但是可以更改(例如固定最小值和最大值)。
现在,当您抑制按键图时,不确定在两个图形中是否使用相同的轴(即使您共享相同的轴,只要您保持使用灵活范围即可)。有各种解决方案。让我给一个更高级的。 :-)
在第一个图中,我们可以保留一个图的副本,完成图(创建关键图),然后按如下方式访问色轴:
d1 = graph.style.density(gradient=color.rgbgradient.Rainbow)
plotitem = g1.plot(graph.data.points(d,x=1,y=2,color=3,title="iterations"),[d1])
f.insert(g1)
g1.finish()
coloraxis = plotitem.privatedatalist[-1].keygraph.axes['x']
现在,您可以在第二张图中使用此色轴,同时仍然覆盖关键图:
d2 = graph.style.density(gradient=color.rgbgradient.Rainbow,keygraph=None,coloraxis=graph.axis.linkedaxis(coloraxis))
这可以确保键图中的比例相同,因此颜色相同。 :-)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。