Python Pyx:删除密度图中重复的颜色条

问题描述

我想在一个Python Pyx图中具有多个密度图。

我可以这样做以得到两个密度图:

enter image description here

问题:如何删除不必要的重复色条?

示例代码来自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,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))

这可以确保键图中的比例相同,因此颜色相同。 :-)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...