如何在matplotlib条形图后面绘制网格线

sdnqo3pr  于 2022-11-30  发布在  其他
关注(0)|答案(5)|浏览(183)
  1. x = ['01-02', '02-02', '03-02', '04-02', '05-02']
  2. y = [2, 2, 3, 7, 2]
  3. fig, ax = plt.subplots(1, 1)
  4. ax.bar(range(len(y)), y, width=0.3,align='center',color='skyblue')
  5. plt.xticks(range(len(y)), x, size='small')
  6. plt.savefig('/home/user/graphimages/foo2.png')
  7. plt.close()

我想在条形图后面绘制(x和y)网格线。

sulc1iza

sulc1iza1#

要添加格网,只需添加
ax.grid()
如果您希望网格位于条形后面,则添加

  1. ax.grid(zorder=0)
  2. ax.bar(range(len(y)), y, width=0.3, align='center', color='skyblue', zorder=3)

最重要的是,条形的zorder大于网格。实验表明,zorder=3是实际产生所需效果的最低值。我不知道为什么zorder=1不够。

EDIT:我注意到这个问题已经用另一种方法回答了here,尽管它有一些链接腐烂。就我所见,两种方法都产生了相同的结果,但andrew cooke的答案更优雅。

qyyhg6bp

qyyhg6bp2#

我建议另一个解决方案,因为投票最多的答案对我不起作用。您可以使用以下代码设置绘图后面的网格线。

  1. ax.set_axisbelow(True)
  2. ax.grid(color='gray', linestyle='dashed')

我从this answer得到了这个代码。

axkjgtzd

axkjgtzd3#

  1. plt.grid(True, color = "grey", linewidth = "1.4", linestyle = "-.")

这对我工作,网格线将在灰色边框颜色,如果你想可以改变边框设计为linestyle = ".."像这样

  1. plt.grid(True, color = "grey", linewidth = "1.4", linestyle = "..")

汇总整个代码块:

  1. fig, ax = plt.subplots(1, 1)
  2. ax.bar(range(len(y)), y, width=0.3,align='center',color='skyblue')
  3. plt.xticks(range(len(y)), x, size='small')
  4. plt.grid(True, color = "grey", linewidth = "1.4", linestyle = "-.")
  5. plt.savefig('/home/user/graphimages/foo2.png')
  6. plt.close()
3yhwsihp

3yhwsihp4#

使用.grid()可使订单变为0(返回)

  1. ax.grid(zorder=0)
jtw3ybtb

jtw3ybtb5#

坐标轴。网格(zorder=0)可以。但是先放置条,然后放置网格。不是相反的方式。

  1. ax = df.plot.bar(x='Index', y='Values', rot=90)
  2. ax.grid(zorder=0)

我使用了一些货币与年份的相关性,并将其排序为 Dataframe df,下面是代码运行的结果。

相关问题