स्कैटर प्लॉट के लिए अलग-अलग टैग कैसे लगाएं


214

मैं matplotlib में स्कैटर प्लॉट करने की कोशिश कर रहा हूं और मुझे अंकों में टैग जोड़ने का कोई तरीका नहीं मिल रहा है। उदाहरण के लिए:

scatter1=plt.scatter(data1["x"], data1["y"], marker="o",
                     c="blue",
                     facecolors="white",
                     edgecolors="blue")

मैं "y" में बिंदुओं के लिए "बिंदु 1", "बिंदु 2" आदि के रूप में लेबल रखना चाहता हूं, इसलिए मैं इसका पता नहीं लगा सका।

जवाबों:


374

शायद plt.annotate का उपयोग करें :

import numpy as np
import matplotlib.pyplot as plt

N = 10
data = np.random.random((N, 4))
labels = ['point{0}'.format(i) for i in range(N)]

plt.subplots_adjust(bottom = 0.1)
plt.scatter(
    data[:, 0], data[:, 1], marker='o', c=data[:, 2], s=data[:, 3] * 1500,
    cmap=plt.get_cmap('Spectral'))

for label, x, y in zip(labels, data[:, 0], data[:, 1]):
    plt.annotate(
        label,
        xy=(x, y), xytext=(-20, 20),
        textcoords='offset points', ha='right', va='bottom',
        bbox=dict(boxstyle='round,pad=0.5', fc='yellow', alpha=0.5),
        arrowprops=dict(arrowstyle = '->', connectionstyle='arc3,rad=0'))

plt.show()

यहां छवि विवरण दर्ज करें


8
मैं यही कहने जा रहा था। डॉक्स से लिंक करें: matplotlib.sourceforge.net/api/… डेमो के लिए लिंक: matplotlib.sourceforge.net/examples/pylab_examples/…
पॉल

4
@ubuntu क्या अंकों के बजाय संख्या (या लेबल) का उपयोग करना संभव है ?
व्लादटन

@ वाल्टएन: आप labelsचर को फिर से परिभाषित करके एनोटेशन को बदल सकते हैं ।
unutbu

16
@ वाल्टएन: आप सर्किलों को छोड़ कर हटा सकते हैं plt.scatter। आप छवि का उपयोग करके मनमाना पाठ रख सकते हैं plt.annotate(label, xy = (x, y), xytext = (0, 0), textcoords = 'offset points')। नोटिस का xytext = (0, 0)मतलब कोई ऑफसेट नहीं है, और छोड़ने का arrowpropsकारण plt.annotateएक तीर नहीं है।

1
@OParker: बदलें 'point{0}'.format(i)करने के लिए 'point{0}'.format(i+1)। या, आप range: ['point{0}'.format(i) for i in range(N)]को बदल सकते हैं ['point{0}'.format(i) for i in range(1,N+1)]
अनटुब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.