gpt4 book ai didi

python - 错误栏帽的线条样式

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:36 37 4
gpt4 key购买 nike

我需要使用不同的线条样式的错误栏上限 (matplotlib/pyplot)。代码:

import matplotlib.pyplot as plt
import math
import numpy as np
fig = plt.figure()
default_size = fig.get_size_inches()
fig.set_size_inches((default_size[0]*2, default_size[1]*2))
x = np.array([math.log(1/8100,10), math.log(1/2025,10), math.log(1/900,10), math.log(1/225,10), math.log(1/100,10), math.log(1/25,10), math.log(1/9,10), math.log(1/4,10)])
err = np.array([0.0, 0.0511919632, 0.0901150419, 0.2201860606, 0.2515436715, 0.3060438313, 0.2990926056, 0.1011243898, 0.0, 0.0541676892, 0.0405075604, 0.0634289157, 0.1107514665, 0.1821387670, 0.2449796704, 0.2120694129, 0.0, 0.0474213990, 0.0423746910, 0.0409827213, 0.0553901830, 0.1136068198, 0.1878500012, 0.2665951693])
y = np.array([0.9779133796, 1.2868842184, 1.2282204495, 1.4052313201, 1.4373060067, 1.2971323397, 1.2214902860, 1.0246309381, 1.4085423946, 1.6703182160, 1.7321032153, 1.8226118650, 1.7983345102, 1.6748284241, 1.4835424022, 1.1404502085, 1.4348299503, 1.7042673230, 1.7949013577, 1.8661885162, 1.8814286876, 1.7666944544, 1.6410772747, 1.2509882123])
plt.plot(x[0:8], y[0:8], linestyle="solid", label="B", marker="s", color="black")
plt.plot(x[0:8], y[8:16], linestyle="dashed", label="P", marker="o", color="black")
plt.plot(x[0:8], y[16:24], linestyle="dotted", label="W", marker="*", color="black")
plt.errorbar(x[0], y[0], yerr=err[0], marker='s', capsize=12, markersize="12", mfc='blue', color='blue')
plt.errorbar(x[1], y[1], yerr=err[1], marker='s', capsize=12, markersize="12", mfc='green', color='green')
plt.errorbar(x[2], y[2], yerr=err[2], marker='s', capsize=12, markersize="12", mfc='red', color='red')
plt.errorbar(x[3], y[3], yerr=err[3], marker='s', capsize=12, markersize="12", mfc='yellow', color='yellow')
plt.errorbar(x[4], y[4], yerr=err[4], marker='s', capsize=12, markersize="12", mfc='orange', color='orange')
plt.errorbar(x[5], y[5], yerr=err[5], marker='s', capsize=12, markersize="12", mfc='purple', color='purple')
plt.errorbar(x[6], y[6], yerr=err[6], marker='s', capsize=12, markersize="12", mfc='magenta', color='magenta')
plt.errorbar(x[7], y[7], yerr=err[7], marker='s', capsize=12, markersize="12", mfc='navy', color='navy')
plt.errorbar(x[0], y[8], yerr=err[8], marker='o', capsize=12, markersize="12", mfc='blue', color='blue')
plt.errorbar(x[1], y[9], yerr=err[9], marker='o', capsize=12, markersize="12", mfc='green', color='green')
plt.errorbar(x[2], y[10], yerr=err[10], marker='o', capsize=12, markersize="12", mfc='red', color='red')
plt.errorbar(x[3], y[11], yerr=err[11], marker='o', capsize=12, markersize="12", mfc='yellow', color='yellow')
plt.errorbar(x[4], y[12], yerr=err[12], marker='o', capsize=12, markersize="12", mfc='orange', color='orange')
plt.errorbar(x[5], y[13], yerr=err[13], marker='o', capsize=12, markersize="12", mfc='purple', color='purple')
plt.errorbar(x[6], y[14], yerr=err[14], marker='o', capsize=12, markersize="12", mfc='magenta', color='magenta')
plt.errorbar(x[7], y[15], yerr=err[15], marker='o', capsize=12, markersize="12", mfc='navy', color='navy')
plt.errorbar(x[0], y[16], yerr=err[16], marker='*', capsize=12, markersize="12", mfc='blue', color='blue')
plt.errorbar(x[1], y[17], yerr=err[17], marker='*', capsize=12, markersize="12", mfc='green', color='green')
plt.errorbar(x[2], y[18], yerr=err[18], marker='*', capsize=12, markersize="12", mfc='red', color='red')
plt.errorbar(x[3], y[19], yerr=err[19], marker='*', capsize=12, markersize="12", mfc='yellow', color='yellow')
plt.errorbar(x[4], y[20], yerr=err[20], marker='*', capsize=12, markersize="12", mfc='orange', color='orange')
plt.errorbar(x[5], y[21], yerr=err[21], marker='*', capsize=12, markersize="12", mfc='purple', color='purple')
plt.errorbar(x[6], y[22], yerr=err[22], marker='*', capsize=12, markersize="12", mfc='magenta', color='magenta')
plt.errorbar(x[7], y[23], yerr=err[23], marker='*', capsize=12, markersize="12", mfc='navy', color='navy')
plt.savefig("plot.pdf")
plt.show()
plt.close()

我的意思是不使用水平线,而是 >----<(旋转 90 度以了解我的意思)或 o---o 等。所以除了 |----- |那么重叠的条不会相互隐藏:

enter image description here

最佳答案

您可以使用任何您喜欢的符号作为错误栏上限。

import matplotlib.pyplot as plt
import numpy as np
x=np.arange(4)
y=np.log(np.array([4,2,5,7]))
yerr = [1,3,2,5]

l, caps, c = plt.errorbar(x,y,yerr, marker='s', capsize=4, markersize=12,
mfc='blue', color='blue')
l2, caps2, c2 = plt.errorbar(x,y+4,yerr, marker='s', capsize=8, markersize=12,
mfc='limegreen', color='limegreen')

for cap in caps:
cap.set_marker("^")
for cap in caps2:
cap.set_marker(ur"$\u266B$")

plt.show()

enter image description here

但是,正如您所注意到的,错误栏的两个标记是相同的。 IE。像
<---< ( .set_marker("^") ) 或 o---o ( .set_marker("o") ) 显然是可能的,而类似 >---< 的东西不是——或者至少不是那么容易。

为了为上限和下限生成不同的上限 ( >---< ),可以将错误栏创建分为 3 部分:错误栏本身没有上限加上一个上限图和一个下限图,分别。

import matplotlib.pyplot as plt
import numpy as np
x=np.arange(4)
y=np.log(np.array([4,2,5,7]))
yerr = np.array([1,3,2,5])

plt.errorbar(x,y,yerr, marker='s', capsize=0, markersize=12, color='blue')
plt.plot(x,y+yerr, marker="v", ls="", color="blue", ms=8)
plt.plot(x,y-yerr, marker="^", ls="", color="blue", ms=8)

plt.errorbar(x,y+4,yerr, marker='o', capsize=0, markersize=12, color='limegreen')
plt.plot(x,y+4+yerr, marker="v", ls="", color='limegreen', ms=8)
plt.plot(x,y+4-yerr, marker="^", ls="", color='limegreen', ms=8)

plt.show()

enter image description here

关于python - 错误栏帽的线条样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46105577/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com