本文主要记录如何用Python中的自带库matplotlib绘制折线图。
直接导入matplotlib库。
import matplotlib.pyplot as plt
用list分别准备横坐标和纵坐标的数据。
X1 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y1 = [971,1344,1953,3064,4766,15522,4389,2615,1696,1210,798]
X2 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y2 = [554,861,1238,1979,3206,10663,2916,1639,1047,704,489]
X3 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y3 = [363,547,801,1254,2205,7535,1984,1115,677,464,340]
X4 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y4 = [293,478,681,1070,1819,6563,1750,953,583,410,287]
直接绘制折线图。
plt.figure()
# X1的分布
plt.plot(X1, Y1, label="X1", color="#FF3B1D", marker='*', linestyle="-")
# X2的分布
plt.plot(X2, Y2,label="X2", color="#3399FF", marker='o', linestyle="-")
# X3的分布
plt.plot(X3, Y3, label="X3", color="#F9A602", marker='s', linestyle="-")
# X4的分布
plt.plot(X4, Y4, label="X4", color="#13C4A3", marker='d', linestyle="-")
# plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(1)) # 将横坐标的值全部显示出来
X_labels = ['-5','-4','-3','-2','-1','0','1','2','3','4','5']
plt.xticks(X1,X_labels,rotation=0)
plt.legend()
plt.title("Lake.bmp")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
上述结果亲测有效。
import matplotlib.pyplot as plt
X1 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y1 = [971,1344,1953,3064,4766,15522,4389,2615,1696,1210,798]
X2 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y2 = [554,861,1238,1979,3206,10663,2916,1639,1047,704,489]
X3 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y3 = [363,547,801,1254,2205,7535,1984,1115,677,464,340]
X4 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y4 = [293,478,681,1070,1819,6563,1750,953,583,410,287]
plt.figure()
# X1的分布
plt.plot(X1, Y1, label="X1", color="#FF3B1D", marker='*', linestyle="-")
# X2的分布
plt.plot(X2, Y2,label="X2", color="#3399FF", marker='o', linestyle="-")
# X3的分布
plt.plot(X3, Y3, label="X3", color="#F9A602", marker='s', linestyle="-")
# X4的分布
plt.plot(X4, Y4, label="X4", color="#13C4A3", marker='d', linestyle="-")
# plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(1)) # 将横坐标的值全部显示出来
X_labels = ['-5','-4','-3','-2','-1','0','1','2','3','4','5']
plt.xticks(X1,X_labels,rotation=0)
plt.legend()
plt.title("Lake.bmp")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
绘制效果如下图所示:
线型设置主要通过语句:plt.plot(X1, Y1, label="X1", color="#FF3B1D", marker='*', linestyle="-")
中的参数linestyle=
进行设置,该参数值与其含义类型对照如下:
线颜色设置主要通过语句:plt.plot(X1, Y1, label="X1", color="#FF3B1D", marker='*', linestyle="-")
中的参数color=
进行设置,该参数值与其含义类型对照如下:
此外,可以通过颜色的RGB值进行颜色的设置,例如语句:plt.plot(X1, Y1, label="X1", color="#FF3B1D", marker='*', linestyle="-")
就是通过设置颜色的RGB值为:#FF3B1D,记录几种常用的颜色的RGB值,如下所示:
序号 | RGB值 | 颜色效果 |
---|---|---|
1 | #FF3B1D | 红色 |
2 | #3399FF | 蓝色 |
3 | #F9A602 | 黄色 |
4 | #13C4A3 | 绿色 |
5 | #FF652D | 橙色 |
6 | #D09E88 | 土色 |
7 | #CC7112 | 深棕色 |
8 | #F2BDD0 | 粉红色 |
更多鲜亮的颜色请参见:鲜亮色彩RGB值网站链接
线型设置主要通过语句:plt.plot(X1, Y1, label="X1", color="#FF3B1D", marker='*', linestyle="-")
中的参数marker=
进行设置,如果不需要对数据点用圆点标记出来,则不需要设置该参数,将其参数设置直接删掉即可,该参数值与其含义类型对照如下:
当不人为设置X轴的刻度时,绘制的图像X轴会将某些数值进行跳过,比如X轴的范围为[-5,5]时,只显示-4、-2、0、2、4这几个点,而中间的值直接省略了,如果想要让这些值显示出来,那么有已下3种方案:
(1)直接将X的刻度值转换成字符串,也就是说直接将X1、X2、X3、X4集合中的每一个元素直接转换成字符串类型即可。在x1的赋值语句后面加上下面这行代码:
X1 = [str(i) for i in X1] #为了让每个值不被省略,把list中所有的元素都转化成str格式
X2 = [str(i) for i in X2] #为了让每个值不被省略,把list中所有的元素都转化成str格式
X3 = [str(i) for i in X3] #为了让每个值不被省略,把list中所有的元素都转化成str格式
X4 = [str(i) for i in X4] #为了让每个值不被省略,把list中所有的元素都转化成str格式
完整的代码如下:
import matplotlib.pyplot as plt
X1 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y1 = [971,1344,1953,3064,4766,15522,4389,2615,1696,1210,798]
X2 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y2 = [554,861,1238,1979,3206,10663,2916,1639,1047,704,489]
X3 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y3 = [363,547,801,1254,2205,7535,1984,1115,677,464,340]
X4 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y4 = [293,478,681,1070,1819,6563,1750,953,583,410,287]
X1 = [str(i) for i in X1] #为了让每个值不被省略,把list中所有的元素都转化成str格式
X2 = [str(i) for i in X2] #为了让每个值不被省略,把list中所有的元素都转化成str格式
X3 = [str(i) for i in X3] #为了让每个值不被省略,把list中所有的元素都转化成str格式
X4 = [str(i) for i in X4] #为了让每个值不被省略,把list中所有的元素都转化成str格式
plt.figure()
# X1的分布
plt.plot(X1, Y1, label="X1", color="#FF3B1D", marker='*', linestyle="-")
# X2的分布
plt.plot(X2, Y2,label="X2", color="#3399FF", marker='o', linestyle="-")
# X3的分布
plt.plot(X3, Y3, label="X3", color="#F9A602", marker='s', linestyle="-")
# X4的分布
plt.plot(X4, Y4, label="X4", color="#13C4A3", marker='d', linestyle="-")
# plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(1)) # 将横坐标的值全部显示出来
# X_labels = ['-5','-4','-3','-2','-1','0','1','2','3','4','5']
# plt.xticks(X1,X_labels,rotation=0)
plt.legend()
plt.title("Lake.bmp")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
(2)直接用代码设置X轴数据的显示间隔,其中MultipleLocator(1)
表示X轴显示数据之间的间隔为1。
import matplotlib.ticker as ticker
plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(1)) # 将横坐标的值全部显示出来
完整的代码如下:
import matplotlib.ticker as ticker
import matplotlib.pyplot as plt
X1 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y1 = [971,1344,1953,3064,4766,15522,4389,2615,1696,1210,798]
X2 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y2 = [554,861,1238,1979,3206,10663,2916,1639,1047,704,489]
X3 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y3 = [363,547,801,1254,2205,7535,1984,1115,677,464,340]
X4 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y4 = [293,478,681,1070,1819,6563,1750,953,583,410,287]
plt.figure()
# X1的分布
plt.plot(X1, Y1, label="X1", color="#FF3B1D", marker='*', linestyle="-")
# X2的分布
plt.plot(X2, Y2,label="X2", color="#3399FF", marker='o', linestyle="-")
# X3的分布
plt.plot(X3, Y3, label="X3", color="#F9A602", marker='s', linestyle="-")
# X4的分布
plt.plot(X4, Y4, label="X4", color="#13C4A3", marker='d', linestyle="-")
plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(1)) # 将横坐标的值全部显示出来,X轴数据显示间隔为1
plt.legend()
plt.title("Lake.bmp")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
(3)通过直接重新为X轴设置标签列表X_labels,实现将X轴的显示进行修改,不仅可以将其改为数值的字符串,也可以改成其他的字符串形式。rotation=0
表示将X轴标签的显示旋转0度,旋转是为了防止有些X轴标签过长,显示会发生重叠,因此将其进行旋转,从而腾出更多的显示空间。
import matplotlib.ticker as ticker
X_labels = ['-5','-4','-3','-2','-1','0','1','2','3','4','5']
plt.xticks(X1,X_labels,rotation=0)
将rotation=0改写为rotation=20之后,X轴标签显示效果变化如下:
代码为:
X_labels = ['-5','-4','-3','-2','-1','0','1','2','3','4','5']
plt.xticks(X1,X_labels,rotation=20)
显示效果为:
还可以根据需要将X坐标改写为想要的标签形式,例如将其改为字母表示:
X_labels = ['-a','-b','-c','-d','-e','a','b','c','d','e','f']
plt.xticks(X1,X_labels,rotation=20)
完整代码为:
import matplotlib.ticker as ticker
import matplotlib.pyplot as plt
X1 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y1 = [971,1344,1953,3064,4766,15522,4389,2615,1696,1210,798]
X2 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y2 = [554,861,1238,1979,3206,10663,2916,1639,1047,704,489]
X3 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y3 = [363,547,801,1254,2205,7535,1984,1115,677,464,340]
X4 = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
Y4 = [293,478,681,1070,1819,6563,1750,953,583,410,287]
# X1 = [str(i) for i in X1] #为了让每个值不被省略,把list中所有的元素都转化成str格式
# X2 = [str(i) for i in X2] #为了让每个值不被省略,把list中所有的元素都转化成str格式
# X3 = [str(i) for i in X3] #为了让每个值不被省略,把list中所有的元素都转化成str格式
# X4 = [str(i) for i in X4] #为了让每个值不被省略,把list中所有的元素都转化成str格式
plt.figure()
# X1的分布
plt.plot(X1, Y1, label="X1", color="#FF3B1D", marker='*', linestyle="-")
# X2的分布
plt.plot(X2, Y2,label="X2", color="#3399FF", marker='o', linestyle="-")
# X3的分布
plt.plot(X3, Y3, label="X3", color="#F9A602", marker='s', linestyle="-")
# X4的分布
plt.plot(X4, Y4, label="X4", color="#13C4A3", marker='d', linestyle="-")
# plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(1)) # 将横坐标的值全部显示出来
X_labels = ['-5','-4','-3','-2','-1','0','1','2','3','4','5']
plt.xticks(X1,X_labels,rotation=20)
plt.legend()
plt.title("Lake.bmp")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
参考链接主要有以下4个:
(1)Python xticks()函数设置X轴方法–刻度、标签
(2)python画图(plt.)x轴横坐标被省略了(被间断)怎么办 | 如何让所有横坐标x值都展示出来 | 如何调整横坐标角度
(3)matplotlib.pyplot.plot()参数详解
(4)Python数据分析:折线图和散点图的绘制