解决温度-比容函数曲线两端倾斜趋势无法显示的绘图问题
解决温度-比容曲线倾斜分布的可视化问题
你的核心问题在于x轴数据跨度极大(0.001量级 vs 14-16量级),普通绘图会压缩小值区间;而使用brokenaxes时,错误调用了全局的plt.plot,没有用断点轴对象的plot方法,导致数据没有映射到对应的分段轴上。
方案1:正确使用brokenaxes断点轴
修正后的代码会将数据分别绘制到两个分段x轴上,两端的趋势都能清晰展示:
from brokenaxes import brokenaxes import matplotlib.pyplot as plt y = [10, 20, 30, 40, 45.806, 45.806, 50, 60, 70] x = [0.00100034, 0.00100184, 0.00100441, 0.00100789, 0.00101027, 14.67, 14.867, 15.335, 15.801] # 创建断点x轴,指定两个区间,缩小小值区间范围聚焦细节 bax = brokenaxes(xlims=((0.001, 0.00102), (14, 16)), hspace=0.1) # 使用bax.plot而非plt.plot,将数据绑定到断点轴 bax.plot(x, y, marker='o') # 添加标签和标题 bax.set_xlabel('比容') bax.set_ylabel('温度') bax.set_title('温度-比容曲线') plt.show()
关键修正点:
- 用
bax.plot()替代plt.plot(),确保数据被正确绘制到分段轴上 - 缩小小值区间的x范围(从0.001到0.00102),更聚焦小x值的变化细节
- 添加标记点(
marker='o'),更清晰展示每个数据点的位置
方案2:拆分两个子图分别展示
如果断点轴的样式不符合需求,可以将数据拆分为两组,绘制两个子图分别展示小x和大x区间的趋势:
import matplotlib.pyplot as plt y = [10, 20, 30, 40, 45.806, 45.806, 50, 60, 70] x = [0.00100034, 0.00100184, 0.00100441, 0.00100789, 0.00101027, 14.67, 14.867, 15.335, 15.801] # 拆分数据:前5个是小x值,后4个是大x值 x_small, y_small = x[:5], y[:5] x_large, y_large = x[5:], y[5:] # 创建2个子图,横向排列 fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4)) # 绘制小x区间 ax1.plot(x_small, y_small, marker='o', color='blue') ax1.set_title('小比容区间') ax1.set_xlabel('比容') ax1.set_ylabel('温度') ax1.grid(True, alpha=0.3) # 绘制大x区间 ax2.plot(x_large, y_large, marker='s', color='orange') ax2.set_title('大比容区间') ax2.set_xlabel('比容') ax2.grid(True, alpha=0.3) plt.tight_layout() plt.show()
优势:
- 两个区间的变化趋势都能独立清晰展示,没有轴刻度的干扰
- 可以分别对每个子图做细节优化(比如添加网格、调整刻度密度)
内容的提问来源于stack exchange,提问作者Tottle
相关产品推荐
相关产品推荐

