2013-07-01 12 views
34

मैंने एक विशिष्ट क्षेत्र में विभिन्न तापमान का प्रतिनिधित्व करने के लिए एक 4 डी स्कैटर प्लॉट ग्राफ बनाया है। जब मैं किंवदंती बनाता हूं, तो पौराणिक कथा सही प्रतीक और रंग दिखाती है लेकिन इसके माध्यम से एक रेखा जोड़ती है। कोड मैं का उपयोग कर रहा है:Matplotlib स्कैटर प्लॉट किंवदंती

colors=['b', 'c', 'y', 'm', 'r'] 
lo = plt.Line2D(range(10), range(10), marker='x', color=colors[0]) 
ll = plt.Line2D(range(10), range(10), marker='o', color=colors[0]) 
l = plt.Line2D(range(10), range(10), marker='o',color=colors[1]) 
a = plt.Line2D(range(10), range(10), marker='o',color=colors[2]) 
h = plt.Line2D(range(10), range(10), marker='o',color=colors[3]) 
hh = plt.Line2D(range(10), range(10), marker='o',color=colors[4]) 
ho = plt.Line2D(range(10), range(10), marker='x', color=colors[4]) 
plt.legend((lo,ll,l,a, h, hh, ho),('Low Outlier', 'LoLo','Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'),numpoints=1, loc='lower left', ncol=3, fontsize=8) 

मैं Scatter और scatter करने के लिए Line2D बदलते कोशिश की। Scatter ने एक त्रुटि लौटा दी और scatter ने ग्राफ को बदल दिया और एक त्रुटि लौटा दी।

scatter के साथ, मैंने डेटा अंक वाले सूचियों में range(10) बदल दिया। प्रत्येक सूची में एक्स, वाई, या जेड चर शामिल है।

lo = plt.scatter(xLOutlier, yLOutlier, zLOutlier, marker='x', color=colors[0]) 
ll = plt.scatter(xLoLo, yLoLo, zLoLo, marker='o', color=colors[0]) 
l = plt.scatter(xLo, yLo, zLo, marker='o',color=colors[1]) 
a = plt.scatter(xAverage, yAverage, zAverage, marker='o',color=colors[2]) 
h = plt.scatter(xHi, yHi, zHi, marker='o',color=colors[3]) 
hh = plt.scatter(xHiHi, yHiHi, zHiHi, marker='o',color=colors[4]) 
ho = plt.scatter(xHOutlier, yHOutlier, zHOutlier, marker='x', color=colors[4]) 
plt.legend((lo,ll,l,a, h, hh, ho),('Low Outlier', 'LoLo','Lo', 'Average', 'Hi', 'HiHi',  'High Outlier'),scatterpoints=1, loc='lower left', ncol=3, fontsize=8) 

जब मैं इसे चलाता हूं, किंवदंती अब मौजूद नहीं है, यह कोने में एक छोटा सा सफेद बॉक्स है जिसमें कुछ भी नहीं है।

कोई सलाह?

+0

मेरा मानना ​​है कि एक बेहतर समाधान [यहां] (http://stackoverflow.com/questions/21654635/scatter-plots-in-pandas-pyplot-how-to-plot दिया जाता है -श्रेणी के द्वारा)। – dmvianna

उत्तर

82

2 डी बिखराव साजिश

matplotlib.pyplot मॉड्यूल के scatter पद्धति का उपयोग करना काम करना चाहिए (कम से कम अजगर 2.7.5 के साथ matplotlib 1.2.1 के साथ), नीचे दिए गए उदाहरण कोड के रूप में। इसके अलावा, यदि आप स्कैटर प्लॉट्स का उपयोग कर रहे हैं, तो प्रत्येक किंवदंती प्रविष्टि के लिए केवल एक बिंदु होने के लिए पौराणिक कॉल में numpoints=1 के बजाय scatterpoints=1 का उपयोग करें।

नीचे दिए गए कोड में मैंने सभी प्लेटों को दृश्यमान बनाते हुए यादृच्छिक मूल्यों का उपयोग किया है (यानी एक-दूसरे को ओवरलैप नहीं करना)।

import matplotlib.pyplot as plt 
from numpy.random import random 

colors = ['b', 'c', 'y', 'm', 'r'] 

lo = plt.scatter(random(10), random(10), marker='x', color=colors[0]) 
ll = plt.scatter(random(10), random(10), marker='o', color=colors[0]) 
l = plt.scatter(random(10), random(10), marker='o', color=colors[1]) 
a = plt.scatter(random(10), random(10), marker='o', color=colors[2]) 
h = plt.scatter(random(10), random(10), marker='o', color=colors[3]) 
hh = plt.scatter(random(10), random(10), marker='o', color=colors[4]) 
ho = plt.scatter(random(10), random(10), marker='x', color=colors[4]) 

plt.legend((lo, ll, l, a, h, hh, ho), 
      ('Low Outlier', 'LoLo', 'Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'), 
      scatterpoints=1, 
      loc='lower left', 
      ncol=3, 
      fontsize=8) 

plt.show() 

enter image description here

3 डी बिखराव साजिश

प्लॉट करने के लिए 3 डी में एक बिखराव, plot विधि का उपयोग करें, के रूप में किंवदंती Patch3DCollection का समर्थन नहीं करता के रूप में एक Axes3D उदाहरण के scatter विधि द्वारा दिया जाता है। मार्करस्टाइल निर्दिष्ट करने के लिए आप इसे विधि कॉल में एक स्थितित्मक तर्क के रूप में शामिल कर सकते हैं, जैसा कि नीचे दिए गए उदाहरण में देखा गया है। वैकल्पिक रूप से linestyle और पैरामीटर दोनों में तर्क शामिल हो सकता है।

import matplotlib.pyplot as plt 
from numpy.random import random 
from mpl_toolkits.mplot3d import Axes3D 

colors=['b', 'c', 'y', 'm', 'r'] 

ax = plt.subplot(111, projection='3d') 

ax.plot(random(10), random(10), random(10), 'x', color=colors[0], label='Low Outlier') 
ax.plot(random(10), random(10), random(10), 'o', color=colors[0], label='LoLo') 
ax.plot(random(10), random(10), random(10), 'o', color=colors[1], label='Lo') 
ax.plot(random(10), random(10), random(10), 'o', color=colors[2], label='Average') 
ax.plot(random(10), random(10), random(10), 'o', color=colors[3], label='Hi') 
ax.plot(random(10), random(10), random(10), 'o', color=colors[4], label='HiHi') 
ax.plot(random(10), random(10), random(10), 'x', color=colors[4], label='High Outlier') 

plt.legend(loc='upper left', numpoints=1, ncol=3, fontsize=8, bbox_to_anchor=(0, 0)) 

plt.show() 

enter image description here

+0

क्या यह 3 डी स्कैटर प्लॉट के लिए भी काम करता है? – user2386081

+1

3 डी स्कैटर की साजिश करते समय पौराणिक कथाओं को काम करने के लिए, मार्कर के साथ 'प्लॉट' विधि का उपयोग स्थितित्मक तर्क के रूप में करें। संपादन देखें। – hooy

संबंधित मुद्दे