मैं एक पायथन पाइक्स प्लॉट में कई घनत्व वाले भूखंड रखना चाहता हूं।

मैं दो घनत्व वाले भूखंडों के लिए ऐसा कर सकता हूं:

enter image description 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()
0
Nigel1 27 सितंबर 2020, 21:32

1 उत्तर

सबसे बढ़िया उत्तर

रंग पट्टी को कीग्राफ कहा जाता है, और यह घनत्व शैली का गुण है। आप इसे कोई नहीं पर सेट कर सकते हैं, अर्थात।

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
wobsta 28 सितंबर 2020, 14:42