Matplotlib,savefig保存图片不显示横纵坐标轴问题

在Jupyter notebook中,保存png格式图片时横纵坐标轴消失,改存为jpg格式后恢复正常。问题可能源于png支持透明背景导致坐标轴未被包含。解决方法是将保存图片的格式改为jpg。

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

问题描述

  1. 在运行时候,notebook显示的是有横纵坐标轴的
  2. 保存了图片之后,保存的图片不存在横纵坐标轴
  3. 保存图片代码
plt.savefig('../../Data/Pics/MeanFig.png', dpi = 200, bbox_inches = 'tight')

代码运行结果

  1. 运行时结果
    在这里插入图片描述
  2. 保存图片结果
    在这里插入图片描述

解决办法

  1. 把图片格式后缀从png改为jpg
  2. 代码为:
plt.savefig('../../Data/Pics/MeanFig.jpg', dpi = 200, bbox_inches = 'tight')
  1. 运行后的结果截图:
    在这里插入图片描述

原因分析

  1. 可能是由于png格式可以保存透明图,而横纵坐标可能不属于整个图,从而未进行保存(只是猜测,欢迎大神来留言)
### 使用Matplotlib创建带有自定义X和Y的折线图 为了实现这一目标,可以利用 `matplotlib` 库中的多种功能来自定义图形的各种属性。以下是具体方法: #### 导入必要的库 首先需要导入 `matplotlib.pyplot` 模块以便后续操作。 ```python import matplotlib.pyplot as plt ``` #### 准备数据集 准备用于绘图的数据点集合,这里假设已经拥有三组同的时间序列数据作为例子展示。 ```python time_points = [1, 2, 3, 4, 5] # 时间刻度 expected_angular_velocity = [2, 4, 6, 8, 10] # 期望角速度指令信号 actual_angular_velocity = [1.9, 3.7, 5.8, 7.6, 9.5] # 实际角速度信号 heading_angle = [-10, -5, 0, 5, 10] # 实际航向角信号 special_time_marks = [2, 3, 4] # 特殊事件的时间标记 ``` #### 创建图形并调整布局比例 通过指定宽度与高度参数控制最终输出图片的比例尺。 ```python fig, ax1 = plt.subplots(figsize=(10, 5)) plt.tight_layout() ``` #### 添加多条曲线到同一张图表上 对于每种类型的信号采用同样式进行区分,并且合理安排它们之间的层次关系。 ```python ax1.scatter(time_points, actual_angular_velocity, color='blue', label="Actual Angular Velocity", zorder=1) # 小圆圈表示实际角速度 ax1.plot(time_points, expected_angular_velocity, 'r-', lw=2, label="Expected Angular Velocity", zorder=2) # 红色实线表示预期角速度 ax2 = ax1.twinx() # 新建第二个y共享相同的x ax2.plot(time_points, heading_angle, 'g-', lw=2, label="Heading Angle", zorder=3) # 绿色实线表示航向角度 ``` #### 自定义坐标轴标签及范围 设定两个独立的 Y 名称以及 X 上的文字说明;同时也可以限定各数值区间以确保视觉效果更佳。 ```python ax1.set_xlabel('Time') ax1.set_ylabel('Angular Velocity (rad/s)', color='black') ax2.set_ylabel('Heading Angle (degree)', color='green') # 设定合理的显示界限 ax1.set_ylim([min(actual_angular_velocity)-1, max(expected_angular_velocity)+1]) ax2.set_ylim([-max(abs(heading_angle))-5, max(abs(heading_angle))+5]) for tick in ax1.get_xticklabels(): tick.set_rotation(45) ``` #### 插入特殊时刻指示线 针对给定的关键时间节点,在相应位置添加垂直分割线帮助观察者理解重要转折点的位置。 ```python for tm in special_time_marks: ax1.axvline(x=tm, linestyle="--", alpha=.5, c="gray") # 加入灰色虚线标注特定瞬间 ``` #### 完善其他细节部分 最后一步就是加入图例解释各个线条含义,并保存或呈现整个图像文件。 ```python lines, labels = ax1.get_legend_handles_labels() lines2, labels2 = ax2.get_legend_handles_labels() ax2.legend(lines + lines2, labels + labels2, loc='upper left') plt.title("Comparison of Expected and Actual Signals Over Time") plt.savefig('./customized_line_chart.png', dpi=300, bbox_inches='tight') # 可选:保存高质量PNG格式的结果图为本地磁盘文件 plt.show() ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值