首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >prettyplotlib标签和注释不以中心为中心。

prettyplotlib标签和注释不以中心为中心。
EN

Stack Overflow用户
提问于 2017-10-05 05:03:49
回答 1查看 124关注 0票数 0

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

使用prettyplotlib==0.1.7

如果我们用第二个参数定义的x轴创建一个法线条形图,标签就很好地集中在条形上:

代码语言:javascript
复制
%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轴标签就偏离了中心:

代码语言:javascript
复制
ppl.bar(ax, x , y, xticklabels=list('1234567'), grid='y')

输出

类似地,当我们使用annotate=True参数时,它偏离了中心:

代码语言:javascript
复制
ppl.bar(ax, x , y, annotate=True, grid='y')

输出

它与https://github.com/olgabot/prettyplotlib/wiki/Examples-with-code#hist上显示的示例不同

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-05 09:23:50

我建议不再使用prettyplotlib。它已经有3年的历史了,它所做的只是改变情节的风格。最好直接使用matplotlib,如果您对这种样式不满意,可以使用另一种创造你自己的。如果你遇到问题,改变风格的问题也很有可能在这里得到解答。

这里有一个方法,如何改变风格,以重新创建从上述问题的情节。

代码语言:javascript
复制
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了,

代码语言:javascript
复制
ax.set_xticks(x)
ax.set_xticklabels(list("ABCDEFG"))

或者给条子加注释,

代码语言:javascript
复制
for i,j in zip(x,y):
    ax.annotate(str(j), xy=(i,j), xytext=(0, 4),textcoords='offset points',ha="center")

matplotlib文档维护得很好,如果需要的话,这里有很多问题可以帮助您完成特例图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46578185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档