Matplotlib 网格线的颜色和刻度

使用Matplotlib时,有时候想显示的网格线与数据显示的曲线不一样,有明显的对比效应,最先想到的就是使用颜色。

在这里还是使用plt.grid函数,这个函数的定义如下:

matplotlib.pyplot.grid(b=None, which='major', axis='both', **kwargs)

由于支持的参数很多,这里主要介绍这几个:

  • b: 这个参数是表示是否显示网格线。如果这个参数为None,但后面有别的参数,说明想显示网格线,就会自动设置这个参数为True。

  • which:表示主刻度的网格线显示,还是次刻度的网格线显示,还是两者都显示。可选的参数有:’major’, ‘minor’, ‘both’。

  • axis:设置X轴的网格线显示,还是Y轴的网格线显示,还是两者都显示,可选的参数有:’both’, ‘x’, ‘y’。

  • kwargs:表示可以传递给函数Line2D的参数,主要修改线的属性,比如线的颜色、线的粗细、线的形状。在上面的例子里,就是使用color = ‘b’来设置线的颜色。

由于刻度的多与少,就决定的网格线的多与少,因此需要学会控制坐标系的刻度控制,就需要使用函数:plt.xticks和plt.yticks,这两个函数用来控制刻度的数目和标记的值。如下面的例子:

matplotlib网格线的颜色和刻度

例子的源码如下:

import matplotlib.pyplot as plt
import numpy as np

x1, x2 = -10, 10
y1, y2 = 10, -10

fig = plt.figure('deepinout')
plt.axis([x1, x2, y1, y2]) #
plt.grid(True, color = 'b')
dx = 5
dy = -2

plt.xticks(np.arange(x1, x2, dx))
plt.yticks(np.arange(y1, y2, dy))
plt.show()

在这个例子里,可以看到X轴与Y轴的坐标刻度间隔会不一样,X轴是间隔5个单位,而Y轴是间隔两个单位。显然看到调整刻度的间隔,就可以控制网格线的多少。

有时候想要更密的网格线,如果按照上面的想法,就是把坐标系里的间隔改为更小,不过这样就会带来一个问题,就是标记太多,导致刻度的文字说明会重叠,这样看起来就比较麻烦。这样就要换一个想法了,采用自己来绘制网格线,要实现这个功能需要使用函数plt.scatter。

下面的例子就来演示scatter的使用:

import matplotlib.pyplot as plt
import numpy as np

x1, x2 = -10, 10
y1, y2 = -10, 10

fig = plt.figure('deepinout.com')
plt.axis([x1, x2, y1, y2])

dx = 0.5
dy = 0.5
for x in np.arange(x1, x2, dx):
    for y in np.arange(y1, y2, dy):
        plt.scatter(x, y, s = 1, color = 'grey')

plt.show()

结果显示如下:

matplotlib网格线的颜色和刻度

通过这样的方式,就可以自己来定义不一样的网格线,达到随心所欲地控制。这里s=1是表示点的大小,如果想改小,数值可以改为0.5, 如果想改更大,比如修改为5,具体多大才合适,取决于你的图里曲线的对比效果。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程