簡體   English   中英

Matplotlib 中的 YTick 重疊

[英]YTick overlapping in Matplotlib

我一直在嘗試在 Matplotlib 上繪制數據,但我似乎有重疊的 YTicks。 我不確定如何調整它們。

代碼

import matplotlib.pyplot as plt

data= [4270424, 4257372, 4100352, 4100356, 4100356]

plt.figure(figsize=(10,5))

plt.plot(data, 'ko-')
plt.ylabel('Data point')
plt.xlabel('Iteration point')
plt.yticks(data)

plt.margins(0.05, 0.1)
plt.show()

在此處輸入圖片說明

我想要的是數字在那里,但是否有可能增加數據點之間的空間?

如果 y 軸上有許多接近的數據點,它們就會重疊。 您可以避免顯示所有這些。 您只能顯示一個太近的 y 刻度線。 但其余的可以顯示在繪圖本身上(而不是在 y 軸上)。

可以使用類似的東西:

import matplotlib.pyplot as plt

data= [4270424, 4257372, 4100352, 4100356, 4100356]

fig, ax = plt.subplots(figsize=(10,8))

#Collect only those ticks that are distant enough from each other
#in order to get rid of ticks overlapping on y-axis:
yticks = [min(data)]         
for i in sorted(data[0:]):
  if i-yticks[-1] > 3500:      
    yticks.append(i)          
#################################################################

plt.plot(data, 'ko-')
plt.ylabel('Data point', fontsize=12)
plt.xlabel('Iteration point', fontsize=12)
plt.yticks(yticks)

plt.margins(0.05, 0.1) 


#Showing y-ticks right on the plot
offset = -1.45
x = ax.get_xticks()

for xp, yp in zip(x, data):
    label = "%s" % yp
    plt.text(xp-offset, yp+offset, label, fontsize=12, horizontalalignment='right', verticalalignment='bottom')
#################################

ax.grid()
plt.show()

輸出: 在此處輸入圖片說明

您還可以完全關閉在 y 軸上顯示yticks 在這種情況下,將此行plt.yticks(yticks)更改為: plt.yticks(yticks, visible=False)在這種情況下,您根本不需要收集部分代碼的刻度。 但是如果你保留它,你可以在需要時打開顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM