我想在绘图上同时获得水平和垂直网格线,但是默认情况下仅显示水平网格线。我正在使用pandas.DataFrame
python中的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文档,Axes
classgrid()
方法的签名如下:
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
这工作
文章标签:matplotlib , pandas , python
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!
评论已关闭!