matplotlib画图显示图例和设置坐标轴刻度
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import rcParams
config = {
"font.family": 'serif',
"font.size": 15,
"mathtext.fontset": 'stix',
"font.serif": ['SimSun'],
}
rcParams.update(config)
这上面的画图必备,就是显示汉字宋体和新罗马的操作
Python画图设置宋体和新罗马Times New Roman
如果这样还不能显示的话,那就是matplotlib里可能没有这个字体
尝试一下这个链接进行设置
df_图 = pd.read_excel('画图.xlsx')
x_data = df_图['time']
y_5 = df_图['路段5']
y_6 = df_图['路段6']
y_7 = df_图['路段7']
y_8 = df_图['路段8']
plt.figure(figsize=(9,8))
plt.plot(x_data, y_5, marker='s', ms=10, label="永安街(公园路-文化路)")
plt.plot(x_data, y_6, marker='o', ms=10, label="永安街(文化路-公园路)")
plt.plot(x_data, y_7, marker='*', ms=10, label="永安街(文化路-白云大道)")
plt.plot(x_data, y_8, marker='v', ms=10, label="永安街(白云大道-文化路)")
plt.xlabel("我是x轴", fontsize = 20)
plt.ylabel("我是y轴", fontsize = 20)
plt.title('我是标题', fontsize = 20)
plt.tick_params(labelsize=13)
plt.savefig("折线图.png")
plt.show()
但是就是没有图例,我不知道为什么,按理说是设置了的,没办法就再单独设置一下位置好了
plt.legend(loc=0)
对于这个位置loc=0默认是最优的,但是想了解其他位置的话,也可以去看一下这篇介绍(希望这位博主不要介意哈)
matplotlib-legend 位置属性 loc 使用
x_data = df_图['time']
y_5 = df_图['路段5']
y_6 = df_图['路段6']
y_7 = df_图['路段7']
y_8 = df_图['路段8']
plt.figure(figsize=(9,8))
plt.plot(x_data, y_5, marker='s', ms=10, label="永安街(公园路-文化路)")
plt.plot(x_data, y_6, marker='o', ms=10, label="永安街(文化路-公园路)")
plt.plot(x_data, y_7, marker='*', ms=10, label="永安街(文化路-白云大道)")
plt.plot(x_data, y_8, marker='v', ms=10, label="永安街(白云大道-文化路)")
plt.legend(loc=0)
plt.xlabel("我是x轴", fontsize = 20)
plt.ylabel("我是y轴", fontsize = 20)
plt.title('我是标题', fontsize = 20)
plt.tick_params(labelsize=13)
plt.savefig("折线图.png")
plt.show()
这么设置过,图例出来了,但总觉得横坐标有点奇怪,他自动生成的,没有按照我实际的值0-24,所以就用下面的语句
plt.xticks(range(len(x_data)),x_data)
x_data = df_图['time']
y_5 = df_图['路段5']
y_6 = df_图['路段6']
y_7 = df_图['路段7']
y_8 = df_图['路段8']
plt.figure(figsize=(9,8))
plt.plot(x_data, y_5, marker='s', ms=10, label="永安街(公园路-文化路)")
plt.plot(x_data, y_6, marker='o', ms=10, label="永安街(文化路-公园路)")
plt.plot(x_data, y_7, marker='*', ms=10, label="永安街(文化路-白云大道)")
plt.plot(x_data, y_8, marker='v', ms=10, label="永安街(白云大道-文化路)")
plt.legend(loc=0)
plt.xlabel("我是x轴", fontsize = 20)
plt.ylabel("我是y轴", fontsize = 20)
plt.xticks(range(len(x_data)),x_data)
plt.title('我是标题', fontsize = 20)
plt.tick_params(labelsize=13)
plt.savefig("折线图.png")
plt.show()
最终的图终于顺眼了
再补充几句图例的更多灵活设置
plt.legend(loc=1,fontsize=12) # 设置图例位置
plt.legend(fontsize=12,bbox_to_anchor=(0.42, 0.76),ncol=2) # 设置图例位置
以上这两句哪一个都可以啊,看看自己到时候需要什么参数,进行设置就好了
其中bbox_to_anchor=(0.42, 0.76)就是调整图例在图中的位置,可以自己看着调到一个不遮挡图像,最优的位置
ncol=2 表示将图例设置为两列
loc参数如下,当然可以写名字,也可以写对应的数字