为什么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]:
但如果我们使用xticklabels
x轴标签偏离中心:
ppl.bar(ax, x , y, xticklabels=list('1234567'), grid='y')
[OUT]:
同样,当我们使用annotate=True
参数时,它会偏离中心:
ppl.bar(ax, x , y, annotate=True, grid='y')
[OUT]:
与https://github.com/olgabot/prettyplotlib/wiki/Examples-with-code#hist
上显示的示例不同答案 0 :(得分:1)
我建议不要再使用prettyplotlib了。这是3岁,它基本上做的就是改变情节的风格。最好直接使用matplotlib,如果您对样式不满意,请使用a different one或create 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()
现在您可以自由设置不同的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文档维护得很好,这里有很多问题可以帮助您在需要时使用特殊情况。