用Python绘制对数比例尺的误差线

2024-09-30 01:20:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个生成以下graph的长代码。在

问题是误差条的长度会因为对数刻度而改变,我希望所有的误差条看起来都是相等的,也就是说,有一个固定的长度。有没有什么方法可以用Python轻松做到这一点?在

编辑:这是代码的一部分,我在这里生成错误条。在

faztec=[11.4,11.4,7.1,7.7,6.8,6.9,6.2,7.5,5.5,4.0,3.5,3.2,2.9,2.9]
flaboca=[9.8,7.3,6.8,8.2,6.8,8.1,6.7,11.0,10.6,4.2,7.0,7.1,5.0,5.3]

err1 = [1.5,1.5,1.7,1.8,1.4,1.5,1.7,3.0,2.7,1.4,1.9,1.9,1.4,1.8]
err2 = [0.7,0.7,0.7,0.8,0.7,0.7,0.7,0.9,0.7,0.7,0.7,0.7,0.7,0.7]

newErr1x = []
newErr1y = []

for i in range(0, len(y)):
    x1 = x[i]
    y1 = (flaboca[i]-err1[i])/(faztec[i]+err2[i])
    x2 = x[i]
    y2 = (flaboca[i]+err1[i])/(faztec[i]-err2[i])
    pl.plot([x1, x2], [y1, y2])
    correction = False
    # when end of segment is near 0, we must change it (because of logx)
    if x2 < endBarLen:
        x2 = 0.03
        endBarLen = endBarLen / 10
        correction = True
    pl.plot([x1+endBarLen, x2-endBarLen], [y1, y1], '-k')
    pl.plot([x1+endBarLen, x2-endBarLen], [y2, y2], '-k')
    if correction:
        correction = False
        endBarLen = endBarLen*10
pl.show()

Tags: 代码falseplot误差plx1x2y1
1条回答
网友
1楼 · 发布于 2024-09-30 01:20:23

您可能会将数组作为错误传入,但如果希望每个错误条的长度相同,则应该为每个错误条传入相同的值。它看起来好像你的y轴不是对数标度-如果你想把你的值从对数空间转换成线性空间,你可以用误差数据的指数或对数来相应地调整它。如果得到更具体的信息,我将能够提供更具体的答案

相关问题 更多 >

    热门问题