pandas - 为什么我不能删除默认的 Pandas plot logy yticklabels?

标签 pandas matplotlib

Pandas 为逻辑图创建默认的 yticklabels。我想用我自己的标签替换这些标签,但由于某种原因,我似乎无法删除默认标签。

如果我在 plot 中指定 yticks方法,它只是覆盖现有的默认标签:

x = [1, 1.5, 2, 2.5, 3]
df = pd.DataFrame({'x': x})
ax = df.plot(logy=True, yticks=[2])

带有覆盖标签的线图:
Line plot with overwritten labels

尝试通过引用 axes 来删除 yticklabels直接也没有帮助:
ax = df.plot(logy=True)
ax.set_yticklabels([])

带有默认标签的线图仍然存在
Line plot with  default labels still there

最佳答案

Matplotlib 图可能有主要和次要刻度和刻度标签。在对数图范围小于十年的情况下,默认情况下会设置次要刻度标签。您可以通过 ax.set_yticklabels([],minor=True) 将它们设置为空列表。 ,或者您可以通过 ax.minorticks_off() 完全关闭它们.
然后您可以将自定义刻度/标签设置为您喜欢的任何内容。

import pandas as pd
import matplotlib.pyplot as plt

x = [1, 1.5, 2, 2.5, 3]
df = pd.DataFrame({'x': x})
ax = df.plot(logy=True)
# turn minor ticklabels off
ax.set_yticklabels([],minor=True)
# or use 
# ax.minorticks_off()
# set new custom ticks/-labels
ax.set_yticks([1,2,2.5])
ax.set_yticklabels(list("ABC"))

plt.show()

enter image description here

当然还有更复杂的方法来处理刻度和标签,例如参见this question对于类似的问题。

关于pandas - 为什么我不能删除默认的 Pandas plot logy yticklabels?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46676419/

相关文章:

python - 根据索引合并两个数据框,替换其他列中的匹配值

python - matshow() 的动画质量比 imshow() 更好。如何改进?

python - 显示 pyplot 图后隐藏线条

python - matplotlib:如何制作一个覆盖下面内容的不透明填充区域?

python - 在条形图上叠加箱线图 matplotlib/python

python - 将数据框与分钟和日期索引相结合

python - 按数据框中每组 bool 值出现的次数进行过滤

Python:在读取 CSV 文件时替换值

python - cv2.imwrite无法写入正确的像素值

python - 字符串以特定文本开头