You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matplotlib中绘制带误差棒的双对数(LogLog)图?

带误差棒的双对数图代码修改方案

你说得对,loglog()方法确实不支持直接添加误差棒,要实现需求,核心是用errorbar()函数配合双对数刻度设置,具体修改如下:

关键修改点

  • 把ax.loglog(x, y, yerr=yerr, linewidth=5)替换为ax.errorbar(x, y, yerr=yerr, linewidth=5, capsize=5, logx=True, logy=True)。其中logx=True和logy=True开启双对数刻度,capsize用来设置误差棒两端的短帽长度(可选,让图更清晰)。
  • 优化数据读取逻辑:原来的手动循环赋值可以用numpy直接转换,省去循环代码,更高效简洁。

修改后的完整代码

import numpy as np
import matplotlib.pyplot as plt

# 读取数据并直接转换为float64数组,省去循环
with open("/home/erg/ch5", "r") as myfiley:
    y = np.array(myfiley.read().splitlines(), dtype='float64')
with open("/home/erg/ch6", "r") as myfilex:
    x = np.array(myfilex.read().splitlines(), dtype='float64')
with open("/home/erg/ch4", "r") as myfilez:
    yerr = np.array(myfilez.read().splitlines(), dtype='float64')

fig, ax = plt.subplots(figsize=(8, 6))
ax.tick_params(axis='both', labelsize=35)
ax.set_title('4RIGHT-ACCIDENT', fontsize=40)
plt.xlabel('AMP', fontsize=35, color='black')
plt.ylabel('COUNTS', fontsize=35, color='black')

# 用errorbar绘制带误差棒的双对数图
ax.errorbar(x, y, yerr=yerr, linewidth=5, capsize=5, logx=True, logy=True)

plt.show()

补充说明

  • 如果需要单独设置轴的对数刻度,也可以在调用errorbar()之后,用ax.set_xscale('log')和ax.set_yscale('log')替代logx和logy参数,效果完全一致。
  • capsize参数可以根据需求调整数值,或者去掉该参数使用默认样式。

内容的提问来源于stack exchange,提问作者Fridrieh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 17:04:51