我想用matplotlib繪製一個陰謀,我要指定刻度線的位置和刻度線的文字。我可以單獨使用yticks(np.arange(0,1.1,1/16.))
和gca().set_yticklabels(['1','2','3'])
。但是,由於某些原因,當我將它們都放在一起時,標籤不會顯示在圖表上。是否有一個原因?我怎樣才能解決它?以下是我想要完成的一個工作示例。Pyplot設置打勾頻率和刻度標籤
x = [-1, -0.2, -0.15, 0.15, 0.2, 7.8, 7.85, 8.15, 8.2, 12]
y = [1, 1, 15/16., 15/16., 1, 1, 15/16., 15/16., 1, 1]
figure(1)
plot(x,y)
xlabel('Time (years)')
ylabel('Brightness')
yticks(np.arange(0,1.1,1/16.))
xticks(np.arange(0,13,2))
ylim(12/16.,16.5/16.)
xlim(-1,12)
gca().set_yticklabels(['12/16', '13/16', '14/16', '15/16', '16/16'])
show(block = False)
實際上,我只是想用分數替換數值,但是當我運行這個時,標籤不會出現。看起來同時使用yticks()
和set_yticklabels
是一個問題,因爲如果我刪除任一行,則剩餘的行按其應該的方式工作。
如果任何人都可以指出如何簡單地強制標籤是一個分數,那也可以解決我的問題。
編輯: 我發現了一個醜陋的解決方法,通過使用
ylim(12/16., 16.5/16)
gca().yaxis.set_major_locator(FixedLocator([12/16., 13/16., 14/16., 15/16., 16/16.]))
gca().yaxis.set_major_formatter(FixedFormatter(['12/16', '13/16', '14/16', '15/16', '16/16']))
雖然這可能對於這個具體的例子工作,它並不能一概而論很好,這很麻煩,指定每個刻度標記的確切位置和標籤。如果有人找到另一種解決方案,我全都是耳朵。