2014-12-20 43 views
1

我正在尋找一種將數字或文本插入標記的方法。 matplotlib.pyplot.plot(*args, **kwargs)文檔中沒有關於此的內容。尋找pyplot.plot()的標記文本選項

默認縮放級別將標記放置在邊緣上,因此減少了可用於刻寫文本的空間。

import matplotlib.pyplot as plt 
x = [1, 2, 3, 4 ,5] 
y = [1, 4, 9, 6, 10] 
plt.plot(x, y, 'ro',markersize=23) 
plt.show() 
+0

什麼你的意思是「不實際的,因爲更大的情節和放大功能」嗎? – BrenBarn

+1

你知道[MatPlotLib中的註釋](http://matplotlib.org/users/annotations_intro.html)嗎? – jkalden

回答

2

正如jkalden所示,annotate可以解決您的問題。函數的xy -argument可讓您定位文本,以便您可以將它放在標記的位置上。

關於您的「縮放」問題,matplotlib將默認在您繪製的最小值和最大值之間拉伸框架。它會導致外部標記的中心位於圖的邊緣,只有一半標記可見。要覆蓋默認的x和y限制,可以使用set_xlimset_ylim。這裏定義了一個偏移量來控制邊界空間。

import matplotlib.pyplot as plt 

x = [1, 2, 3, 4 ,5] 
y = [1, 4, 9, 6, 10] 

fig, ax = plt.subplots() 

# instanciate a figure and ax object 
# annotate is a method that belongs to axes 
ax.plot(x, y, 'ro',markersize=23) 

## controls the extent of the plot. 
offset = 1.0 
ax.set_xlim(min(x)-offset, max(x)+ offset) 
ax.set_ylim(min(y)-offset, max(y)+ offset) 

# loop through each x,y pair 
for i,j in zip(x,y): 
    corr = -0.05 # adds a little correction to put annotation in marker's centrum 
    ax.annotate(str(j), xy=(i + corr, j + corr)) 

plt.show() 

下面是它的外觀:

Running the suggested code above gives a figure like this.