prettyplotlib标签和注释偏离中心

时间:2017-10-05 05:03:50

标签: python matplotlib plot prettyplotlib

为什么prettyplotlib barchat和x轴标签的注释偏离中心?

使用prettyplotlib==0.1.7

如果我们使用第二个参数定义的x轴创建一个普通条形图,标签就会在条形图上居中:

%matplotlib inline
import numpy as np
import prettyplotlib as ppl
import matplotlib.pyplot as plt

fig, ax = plt.subplots(1)

counter = {1:1, 2:4, 3:9, 4:16, 5:25, 6:36, 7:49}

x, y = zip(*counter.items())

ppl.bar(ax, x , y, grid='y')

[OUT]:

enter image description here

但如果我们使用xticklabels x轴标签偏离中心:

ppl.bar(ax, x , y, xticklabels=list('1234567'), grid='y')

[OUT]:

enter image description here

同样,当我们使用annotate=True参数时,它会偏离中心:

ppl.bar(ax, x , y, annotate=True, grid='y')

[OUT]:

enter image description here

https://github.com/olgabot/prettyplotlib/wiki/Examples-with-code#hist

上显示的示例不同

1 个答案:

答案 0 :(得分:1)

我建议不要再使用prettyplotlib了。这是3岁,它基本上做的就是改变情节的风格。最好直接使用matplotlib,如果您对样式不满意,请使用a different onecreate your own。如果您遇到问题,有关更改样式的问题也很有可能在此处得到解答。

以下是一种如何根据上述问题更改样式以重新创建绘图的方法。

import matplotlib.pyplot as plt

style = {"axes.grid" : True,
         "axes.grid.axis" : "y",
         "axes.spines.top"  : False,
         "axes.spines.right"  : False,
         "grid.color" : "white",
         "ytick.left" : False,
         "xtick.bottom" : False,
         }
plt.rcParams.update(style)

counter = {1:1, 2:4, 3:9, 4:16, 5:25, 6:36, 7:49}
x, y = zip(*counter.items())

fig, ax = plt.subplots(1)
ax.bar(x , y, color="#66c2a5" )

plt.show()

enter image description here

现在您可以自由设置不同的xticklabels,

ax.set_xticks(x)
ax.set_xticklabels(list("ABCDEFG"))

或注释栏,

for i,j in zip(x,y):
    ax.annotate(str(j), xy=(i,j), xytext=(0, 4),textcoords='offset points',ha="center")

enter image description here

matplotlib文档维护得很好,这里有很多问题可以帮助您在需要时使用特殊情况。