Python Pyx:删除密度图中重复的颜色条
Python Pyx: remove repeated color bars in density plot
我想在一个 Python Pyx 图中有多个密度图。
我可以这样做以获得两个密度图:
问题:如何去除不必要的重复彩条?
示例代码来自here:
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, width=8, xpos=g1.xpos+14.0,
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)$'))
g2.plot(graph.data.points(d, x=1, y=2, color=3, title="iterations"),
[graph.style.density(gradient=color.rgbgradient.Rainbow)])
f.insert(g2)
f.writePDFfile()
颜色条称为keygraph,是属性的密度样式。您可以将其设置为None,即
graph.style.density(gradient=color.rgbgradient.Rainbow, keygraph=None)
它不会在内部删除(自动)键图,但会抑制其输出。
你也可以自己设置keygraph,另外你还可以设置这个keygraph的coloraxis。它也是一种 属性 样式,默认情况下是一个简单的线性轴,但可以更改(如固定最小值和最大值)。
现在,当您抑制键图时,不确定两个图中是否会使用相同的轴(即使您共享相同的轴,只要您保持使用灵活的范围)。有各种各样的解决方案。让我举一个更高级的。 :-)
在第一个图表中,我们可以保留 plotitem 的副本,完成绘图(创建关键图),然后像这样访问色轴:
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))
这可以确保键图中的比例相同,因此颜色也相同。 :-)
我想在一个 Python Pyx 图中有多个密度图。
我可以这样做以获得两个密度图:
问题:如何去除不必要的重复彩条?
示例代码来自here:
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, width=8, xpos=g1.xpos+14.0,
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)$'))
g2.plot(graph.data.points(d, x=1, y=2, color=3, title="iterations"),
[graph.style.density(gradient=color.rgbgradient.Rainbow)])
f.insert(g2)
f.writePDFfile()
颜色条称为keygraph,是属性的密度样式。您可以将其设置为None,即
graph.style.density(gradient=color.rgbgradient.Rainbow, keygraph=None)
它不会在内部删除(自动)键图,但会抑制其输出。
你也可以自己设置keygraph,另外你还可以设置这个keygraph的coloraxis。它也是一种 属性 样式,默认情况下是一个简单的线性轴,但可以更改(如固定最小值和最大值)。
现在,当您抑制键图时,不确定两个图中是否会使用相同的轴(即使您共享相同的轴,只要您保持使用灵活的范围)。有各种各样的解决方案。让我举一个更高级的。 :-)
在第一个图表中,我们可以保留 plotitem 的副本,完成绘图(创建关键图),然后像这样访问色轴:
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))
这可以确保键图中的比例相同,因此颜色也相同。 :-)