常用绘图之折线图

这篇博客介绍了如何使用SciencePlots库和Matplotlib进行折线图绘制,包括自定义刻度和标签。通过设置xticks和xticklabels,可以筛选并展示部分刻度及对应的标签。同时,展示了如何使用MultipleLocator调整刻度单位。博客还涉及到在图上添加自定义竖线、文本标签和图例,以及保存图片时去除多余空白的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用SciencePlots画论文配图可见:传送门

折线图

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
# 中文和负号的正常显示
mpl.rcParams['font.sans-serif'] = ['Times New Roman']
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False
#--------自定义刻度和标签--------------------
times=data1['start_time_noday'].tolist()
# 筛选显示的刻度位置及标签
ticks=list(range(0,len(times),2))#间隔为2
if ticks[-1]!=len(times)-1:#保证最后一位纳入标签
    ticks.append(len(times)-1)
labels=[times[i] for i in ticks]#根据刻度获取对应的标签
# ---------绘图----------------------
fig= plt.figure(figsize=(8, 4),dpi=100)
# 设置图形的显示风格
plt.style.use('ggplot')
ax1 = fig.add_subplot(111)
ax1.plot(data1['order_id'],'-*',linewidth=1.5,label='非雨天工作日')
ax1.plot(data2['order_id'],'-o',linewidth=1.5,label='非雨天周末')
ax1.plot(data3['order_id'],'-v',linewidth=1.5,label='雨天工作日')
ax1.plot(data4['order_id'],'-^',linewidth=1.5,label='雨天周末')
ax1.set_xlabel('时间',fontsize =10)
ax1.set_ylabel('订单量',fontsize =10)
ax1.set(xlim=[0,len(times)-1])
ax1.set_xticks(ticks)#设置显示的刻度
ax1.set_xticklabels(labels, rotation=45, horizontalalignment='right')#设置对应显示的标签
ax1.tick_params(labelsize=8)
ax1.set_title('骑行订单时间分布',fontsize =8)
#-------画自定义横线或者竖线---------------------------------
#vlines(x, ymin, ymax)画竖直线,前三个参数分别是:横坐标,minof纵坐标,max纵坐标
#hlines(y, xmin, xmax)画水平线
plt.vlines(32, 0, 2358, colors = "black", linestyles = "dashed",linewidth=0.8)
plt.vlines(34, 0, 1366, colors = "black", linestyles = "dashed",linewidth=0.8)
plt.vlines(72, 0, 1702, colors = "black", linestyles = "dashed",linewidth=0.8)
# ax1.vlines(0, 0, 0.5, colors = "c", linestyles = "dashed")
bbox_props=dict(boxstyle="round",fc="w",ec="0.5",alpha=0)
ax1.text(30,100,'8:00',ha='center',va='center',size=8,bbox=bbox_props,horizontalalignment='left')
ax1.text(36,100,'8:30',ha='center',va='center',size=8,bbox=bbox_props,horizontalalignment='left')
ax1.text(74,100,'18:00',ha='center',va='center',size=8,bbox=bbox_props,horizontalalignment='left')
#-----------------------设置图例-----------------
ax1.legend(loc='upper right', frameon=False,fontsize = 10)
#----------保存图片--------------------------
plt.savefig('./time_distribute_15min_israin_isweekday.png',format='png', dpi=300)
plt.show()

自定义刻度

这个主要有两种情况,第一种是想让刻度对应的标签只显示出来一部分,第二种是默认画出的图的刻度单位不好,想自定义调整

自定义文本标签

有些时候由于刻度太密,或许只想显示部分刻度和标签的时候,可以用如下方法筛选显示的刻度位置及标签

times=data1['start_time_noday'].tolist()
# 筛选显示的刻度位置及标签
ticks=list(range(0,len(times),2))#间隔为2
if ticks[-1]!=len(times)-1:#保证最后一位纳入标签
    ticks.append(len(times)-1)
labels=[times[i] for i in ticks]#根据刻度获取对应的标签
ax1.set_xticks(ticks)#设置显示的刻度
ax1.set_xticklabels(labels, rotation=45, horizontalalignment='right')#设置对应显示的标签

在这里插入图片描述

自定义数值显示的单位

若是x,y轴均为数值类型,想指定x,y轴的刻度元单位,则需要用到

from matplotlib.pyplot import MultipleLocator
#这个类用于设置刻度间隔

x_major_locator=MultipleLocator(2)
#把x轴的刻度间隔设置为2
y_major_locator=MultipleLocator(10)
#把y轴的刻度间隔设置为10
ax.xaxis.set_major_locator(x_major_locator)
#用x_major_locator设置x轴的单位刻度
ax.yaxis.set_major_locator(y_major_locator)
#用y_major_locator设置y轴的单位刻度

两种效果对比:
在这里插入图片描述

自定义文本标签

在这里插入图片描述

自定义数值显示的单位

保存图片

plt.savefig('zrx.png',format='png',bbox_inches='tight', pad_inches = 0.05,dpi=300)

bbox_inches=‘tight’, pad_inches = 0.05,这两个参数是为了保存图片时去掉空余部分
在这里插入图片描述

加上前

在这里插入图片描述

加上后
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fff2zrx

谢谢老板

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值