2013-02-05 70 views
25

我有一個簡單的情節代碼增加額外的軸蜱使用matplotlib

plt.plot(x,y) 
plt.show() 

我要添加在x軸上一些額外的蜱除了到最新的版本,讓我們在

extraticks=[2.1, 3, 7.6] 

正如您所看到的,我沒有刻度線的模式,所以我不想增加整個軸的刻度頻率;只是保持原來的,並添加這些額外...

是否有可能,在所有?

問候

回答

45

是的,你可以嘗試這樣的:

plt.xticks(list(plt.xticks()[0]) + extraticks) 

功能使用的xticks()。當沒有參數調用時,它返回當前的刻度。用參數調用它,您可以設置勾號位置以及可選的標籤。

+2

+1非常簡潔的答案。注意:你不需要調用'sorted()'在那裏。顯然不是什麼大不了的。 –

+0

感謝@PaulH的說明,出於某種原因,我認爲它會更安全,但它也沒有它。編輯。 –

+0

如何更改額外門票的間距以避免與其他門票重疊? – Sigur

9

爲了完整起見,我想給@列夫 - Levitsky的偉大答案的OO版本:

lines = plt.plot(x,y) 
ax = lines[0].axes 
ax.set_xticks(list(ax.get_xticks()) + extraticks) 

這裏我們使用由plot返回Lines2D序列中提取的Axes對象。通常情況下,如果您使用的是OO界面,則您應該先參考Axes,然後您可以撥打plot而不是pyplot

角買者

如果由於某種原因,你已修改了軸的限制(例如,通過編程方式放大到數據的一部分),您將需要此手術後恢復它們:

lim = ax.get_xlim() 
ax.set_xticks(list(ax.get_xticks()) + extraticks) 
ax.set_xlim(lim) 

否則,該圖將使x軸顯示軸上的所有可用滴答。