如何在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
相关产品推荐
相关产品推荐

