[英]Matplotlib: add custom tick label and remove custom tick on y-axis
我想刪除一個刻度線及其標簽,而是在沒有刻度線本身的其他(但關閉)位置添加一個新的刻度線標簽。 我不確定該怎么做。 舉一個例子。
import matplotlib.pyplot as plt
def main():
fig = plt.figure()
x = [1,2,3,4,5]
y = x
ax = fig.add_subplot(1,1,1)
y_ticks = ax.yaxis.get_major_ticks()
y_ticks[-1].label.set_visible(False)
ax.set_yticks([3.7], minor=True)
ax.set_yticklabels(["100"], minor=True)
ax.plot(x,y)
plt.show()
if __name__ == '__main__':
main()
我剩下的是刪除位於y = 3.5,3.7的刻度線。
另外,如您所見,我訪問了y_ticks [-1]以將其標簽設置為不可見。 這是任意選擇的,如果有人可以解釋為什么y_ticks [-1]選擇位於y = 3.5的刻度,我將不勝感激。
謝謝
編輯:
如兩個答案中所述,我將代碼更改為:
import matplotlib.pyplot as plt
def main():
fig = plt.figure()
x = [1,2,3,4,5]
y = x
ax = fig.add_subplot(1,1,1)
ax.plot(x,y)
ax.set_yticks([3.7], minor=True)
ax.set_yticklabels(["100"], minor=True)
y_ticks = ax.yaxis.get_major_ticks()
y_ticks[5].set_visible(False)
y_ticks[6].label.set_visible(False)
plt.show()
if __name__ == '__main__':
main()
這產生了下面的圖,您可以看到y_ticks[5]
指向位於y=3.5
的刻度線, y_ticks[6]
指向位於y=4.0
的刻度線-它跳過了y=3.7
的刻度線。 那么我如何才能訪問它並僅刪除刻度線? 這兩個建議僅說明了如何同時刪除刻度線和標簽或僅刪除標簽(不帶刻度線),我正在尋找刪除刻度線並保留標簽的方法。
嘗試使用y_ticks[-1].set_visible(False)
代替y_ticks[-1].label.set_visible(False)
。 它使標簽和刻度標記都不可見。
編輯:
您可以使用ax.yaxis.get_minor_ticks()
在3,7
處訪問小刻度線,如以下代碼所示:
import matplotlib.pyplot as plt
fig = plt.figure()
x = [1,2,3,4,5]
y = x
ax = fig.add_subplot(1,1,1)
ax.set_yticks([3.7], minor=True)
ax.set_yticklabels(["100"], minor=True)
ax.plot(x,y)
y_ticks = ax.yaxis.get_major_ticks()
y_ticks[5].set_visible(False)
y_minor_ticks = ax.yaxis.get_minor_ticks()
y_minor_ticks[0].label.set_visible(False)
plt.show()
如果您只希望100
附近的刻度消失,並且想要保留標簽,請使用:
ax.yaxis.get_minorticklines()[0].set_visible(False)
代替 :
y_minor_ticks = ax.yaxis.get_minor_ticks()
y_minor_ticks[0].label.set_visible(False)
matplotlib.axis
文檔中介紹了所有允許訪問不同刻度部分的功能。
什么情況是:你得到y_ticks的列表中,您已經創建了一個軸后 ,但你之前繪制任何東西。 因此,matplotlib設置了一個在兩個軸上都帶有六個刻度的軸(從0.0到1.0),並提供了刻度列表。
然后,在繪制時,將添加更多的刻度,並使用新標簽更新列表中的刻度。 y_ticks []中的最后一項現在位於Y軸的中間。
解決方案:首先繪制, 然后 y_ticks = ax.yaxis.get_major_ticks()
。
好,找到答案了。 將y=3.7
處添加的y刻度添加到短軸而不是長軸。 因此我通過ax.tick_params(axis='y', which='minor', length=0)
訪問它。 但是,這將根據tick_params
設置所有次要滴答tick_params
。
import matplotlib.pyplot as plt
def main():
fig = plt.figure()
x = [1,2,3,4,5]
y = x
ax = fig.add_subplot(1,1,1)
ax.plot(x,y)
ax.set_yticks([3.7], minor=True)
ax.set_yticklabels(["100"], minor=True)
y_ticks_major = ax.yaxis.get_major_ticks()
y_ticks_major[5].set_visible(False)
ax.tick_params(axis='y', which='minor', length=0)
plt.show()
if __name__ == '__main__':
main()
謝謝您的幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.