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

时间:2017-10-10 21:36:36

标签: pandas matplotlib

Pandas为logy图创建默认的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删除yticklabel也无济于事:

ax = df.plot(logy=True)
ax.set_yticklabels([])

仍有默认标签的折线图 Line plot with  default labels still there

2 个答案:

答案 0 :(得分:1)

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针对类似问题。

答案 1 :(得分:0)

对我来说,要删除默认标签,我将主要标签设置为空,但未设置次要标签。

ax.set_xticklabels("",major=True)