网站建设犭金手指六六壹柒,公路建设市场信用信息系统网站,做谷歌推广对网站的要求,西安网站建设定前言
我的科研论文中需要绘制一个精美的折线图#xff0c;我的折线图中有三条曲线#xff0c;分别表示期望角速度指令信号#xff0c;和实际的角速度信号#xff0c;还有实际的航向角信号#xff0c;现在我已经拥有了数据#xff0c;使用Python中matplotlib.plt.plot来直…前言
我的科研论文中需要绘制一个精美的折线图我的折线图中有三条曲线分别表示期望角速度指令信号和实际的角速度信号还有实际的航向角信号现在我已经拥有了数据使用Python中matplotlib.plt.plot来直接绘制不够精美我希望绘制一个精美的折线图要求是
提升绘图的美观程度特点是风格简单明快。这三个曲线要绘制在一张图中实际角速度信号置于底层期望角速度信号置于中层实际航向角信号置于顶层期望角速度信号和实际航向角信号均用实线表示实际角速度信号用小点表示曲线图左侧y轴代表角速度右侧y轴代表航向角x轴代表时间每一次实际航向角的巨大变化都代表着实际中路径的弯折九十度左右一共发生了3次我可以提供这三次的分别发生时间需要在对应时间位置垂直于x轴画一条虚线标识图像的长宽比是2:1
代码
下面提供实例代码作为模板
from cProfile import label
from tkinter.ttk import Style
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from scipy.spatial.distance import cdist
from matplotlib.ticker import AutoMinorLocator# 假定你已经有了数据这里我用随机数代替
# time为时间轴数据yaw_rate_cmd为期望角速度指令yaw_rate_real为实际角速度信号heading_angle为实际航向角信号
time np.linspace(0, 10, 100)
yaw_rate_cmd np.sin(time) # 示例数据
yaw_rate_real np.sin(time - 0.5) * 0.8 # 示例数据
heading_angle np.piecewise(time, [time 3, (time 3) (time 6), time 6], [45, 90, 135]) # 示例数据# 创建图像和轴对象
fig, ax1 plt.subplots()# 设置绘图风格
plt.style.use(seaborn-whitegrid)# 绘制实际角速度信号置于底层用小点表示
ax1.plot(time, yaw_rate_real, k:, labelActual Yaw Rate, zorder1)# 创建共享x轴的第二个y轴
ax2 ax1.twinx()# 绘制期望角速度信号置于中层用实线表示
ax1.plot(time, yaw_rate_cmd, b-, labelDesired Yaw Rate, zorder2)# 绘制实际航向角信号置于顶层用实线表示
ax2.plot(time, heading_angle, r-, labelHeading Angle, zorder3)# 指定的时间点
time_points [3,6.25]# # 对于每一个指定的时间点画一条虚线
for time_point in time_points:plt.axvline(xtime_point, colorg, linestyle--, labelSignificant Change if time_point time_points[0] else )# 因为所有虚线都具有相同的意义所以我们只需要在图例中表示一次
# 检查time_point是否为第一个指定时间点如果是则添加图例标签# 设置轴标题
ax1.set_xlabel(Time (s))
ax1.set_ylabel(Yaw Rate (degrees/s), colorb)
ax2.set_ylabel(Heading Angle (degrees), colorr)# 设置y轴颜色与曲线颜色一致
ax1.tick_params(axisy, colorsblue)
ax2.tick_params(axisy, colorsred)# 增加图例
lines, labels ax1.get_legend_handles_labels()
lines2, labels2 ax2.get_legend_handles_labels()
ax2.legend(lines lines2, labels labels2, locupper right)# 增加次要刻度线以提高可读性
ax1.xaxis.set_minor_locator(AutoMinorLocator())
ax1.yaxis.set_minor_locator(AutoMinorLocator())
ax2.yaxis.set_minor_locator(AutoMinorLocator())# 显示图像
plt.show()代码解释
首先绘制了三个曲线实际角速度、期望角速度、实际航向角其中实际角速度曲线使用小点样式表示然后创建了一个共享x轴的第二个y轴来绘制航向角最后这个代码段会在3和6.25秒这三个时刻左右绘制绿色虚线不论这些时刻是否存在于times数组中。图例中的Significant Change标签只会添加一次避免重复。
结果 延伸阅读
如何使用Python的matplotlib和seaborn库绘制颜色渐变的高级散点图