2016-11-30 66 views
2

假設我有一組點x和一組相應的數據y。我現在將它們繪製在散點圖中,plt.scatter(x,y)。我得到的圖包含matplotlib生成的一些x軸刻度。有沒有一種方法可以實現自動滴答,但要將x軸上的垂直線添加到散點中的點並標記它們?散點圖中垂直線的點

+0

解釋你的問題,請 – eyllanesc

+0

如果你可以添加所需的輸出的數字將是巨大的 – eyllanesc

回答

2

是否這樣?

altered scattergram

如果是這樣那麼這裏的要領。

import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib import collections as matcoll 

x = np.arange(1,13) 
y = [15,14,15,18,21,25,27,26,24,20,18,16] 

lines = [] 
for i in range(len(x)): 
    pair=[(x[i],0), (x[i], y[i])] 
    lines.append(pair) 

linecoll = matcoll.LineCollection(lines) 
fig, ax = plt.subplots() 
ax.add_collection(linecoll) 

plt.scatter(x,y) 

plt.xticks(x) 
plt.ylim(0,30) 

plt.show() 

附錄:

對於彩色圓點,更換plt.scatter(x,y)有:

colours = ['Crimson', 'Blue', 'Fuchsia', 'Gold', 'Green', 'Tomato', 'Indigo', 'Turquoise', 'Brown', 'Wheat', 'Yellow',] 
plt.scatter(x,y,c=colours) 
  • 對於指定顏色看specifying colours可選方式。
  • 有關X11顏色名稱及其對應的十六進制代碼的列表,請參見X11 colours
  • 請注意,matplotlib似乎不喜歡兩個詞的顏色名稱,如「熱粉紅色」。
+0

什麼,如果我需要繪製的每個點以不同的顏色? –

+0

請參閱答案附錄。 –

2

嗯,有一個stem方法,非常容易使用:

import matplotlib.pyplot as plt 
import numpy as np 

x, y = np.random.random((2, 20)) 

fig, ax = plt.subplots() 
ax.stem(x, y, markerfmt=' ') 
plt.show() 

如果您想對線的頂部子彈,只是刪除markerfmt