使垂直网格线出现在matplotlib中的线图中

2020/12/07 07:32 · python ·  · 0评论

我想在绘图上同时获得水平和垂直网格线,但是默认情况下仅显示水平网格线。我正在使用pandas.DataFramepython中的sql查询生成一个在x轴上带有日期的折线图。我不确定为什么它们没有出现在日期上,我试图寻找答案,但找不到答案。

我仅用来绘制图形的就是下面的简单代码。

data.plot()
grid('on')

data是DataFrame,其中包含日期和来自sql查询的数据。

我也尝试过在下面添加代码,但仍然得到相同的输出,但没有垂直网格线。

ax = plt.axes()        
ax.yaxis.grid() # horizontal lines
ax.xaxis.grid() # vertical lines

有什么建议么?

在此处输入图片说明

您可能需要在通话中提供布尔arg,例如,使用ax.yaxis.grid(True)代替ax.yaxis.grid()此外,由于您同时使用这两种方法,因此您可以将它们合并为ax.grid,这两种方法都适用,而不是对每个维度都进行一次。

ax = plt.gca()
ax.grid(True)

那应该把你整理出来。

plt.gca().xaxis.grid(True) 被证明是我的解决方案

根据matplotlib文档Axesclassgrid()方法的签名如下:

Axes.grid(b =无,其中=“主要”,axis =“两个”,** kwargs)

打开或关闭坐标轴网格。

which 可以是“主要”(默认),“次要”或“两者”,以控制主要刻度网格,次要刻度网格或两者都受影响。

axis 可以是“两者”(默认值),“ x”或“ y”,以控制绘制哪一组网格线。

因此,为了同时显示x轴和y轴的网格线,我们可以使用以下代码:

ax = plt.gca()
ax.grid(which='major', axis='both', linestyle='--')

此方法使我们可以更好地控制显示网格线的内容。

也许这可以解决问题:
matplotlib,在绘图上定义网格的大小

ax.grid(True, which='both')

事实是,网格正在运行,但是00:00仅有一个v网格,而其他网格则没有。我遇到了一个同样的问题,就是很多天11月1日只有一个网格。

简短答案(有关详细信息,请阅读下文):

ax.grid(axis='both', which='both')

在此处输入图片说明

您所做的是正确的,应该可以。

但是,由于示例中X轴是DateTime轴,因此主要刻度标记(很可能)仅出现在X轴的两端。其他可见刻度线是次要刻度线。

ax.grid()默认情况下,方法在“主要”刻度线上绘制网格线。因此,您的绘图中没有任何内容。

使用下面的代码突出显示刻度线。专业将是蓝色,未成年人是红色。

ax.tick_params(which='both', width=3)
ax.tick_params(which='major', length=20, color='b')
ax.tick_params(which='minor', length=10, color='r')

现在要使网格线也出现在次要刻度线上,请将传递which='minor'给方法:

ax.grid(b=True, which='minor', axis='x', color='#000000', linestyle='--')

或仅用于which='both'绘制主要和次要网格线。这是一条更优雅的网格线:

ax.grid(b=True, which='minor', axis='both', color='#888888', linestyle='--')
ax.grid(b=True, which='major', axis='both', color='#000000', linestyle='-')

仅适用于水平线

ax = plt.axes()        
ax.yaxis.grid() # horizontal lines

这工作

本文地址:http://python.askforanswer.com/shichuizhiwanggexianchuxianzaimatplotlibzhongdexiantuzhong.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!