matplotlib画图显示图例和设置坐标轴刻度

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参数如下,当然可以写名字,也可以写对应的数字
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43697614/article/details/124416980