为什么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')输出

但是如果我们使用xticklabels,x轴标签就偏离了中心:
ppl.bar(ax, x , y, xticklabels=list('1234567'), grid='y')输出

类似地,当我们使用annotate=True参数时,它偏离了中心:
ppl.bar(ax, x , y, annotate=True, grid='y')输出

它与https://github.com/olgabot/prettyplotlib/wiki/Examples-with-code#hist上显示的示例不同
发布于 2017-10-05 09:23:50
我建议不再使用prettyplotlib。它已经有3年的历史了,它所做的只是改变情节的风格。最好直接使用matplotlib,如果您对这种样式不满意,可以使用另一种或创造你自己的。如果你遇到问题,改变风格的问题也很有可能在这里得到解答。
这里有一个方法,如何改变风格,以重新创建从上述问题的情节。
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()

现在你可以自由地设置不同的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")

matplotlib文档维护得很好,如果需要的话,这里有很多问题可以帮助您完成特例图。
https://stackoverflow.com/questions/46578185
复制相似问题