Errorbar 可变标记大小
Errorbar variable marker size
我想绘制一些数据 x
和 y
,其中我需要标记大小取决于第三个数组 z
。我可以分别绘制它们(即,用 size = z
散布 x
和 y
,以及不带标记的错误栏 fmc = 'none'
),这解决了它。问题是我需要图例来同时显示错误栏和点:
而不是
这里有代码和一些虚构的数据:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1,10,100)
y = 2*x
yerr = np.random(0.5,1.0,100)
z = np.random(1,10,100)
fig, ax = plt.subplots()
plt.scatter(x, y, s=z, facecolors='', edgecolors='red', label='Scatter')
ax.errorbar(x, y, yerr=yerr, xerr=0, fmt='none', mfc='o', color='red', capthick=1, label='Error bar')
plt.legend()
plt.show()
这会产生我想避免的图例:
在 errorbar the argument
markersizedoes not accept arrays as
scatter` 中。
想法通常是使用代理放入图例。因此,虽然图中的误差线可能没有标记,但图例中的误差线有一个标记集。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1,10,11)
y = 2*x
yerr = np.random.rand(11)*5
z = np.random.rand(11)*2+5
fig, ax = plt.subplots()
sc = ax.scatter(x, y, s=z**2, facecolors='', edgecolors='red')
errb = ax.errorbar(x, y, yerr=yerr, xerr=0, fmt='none',
color='red', capthick=1, label="errorbar")
proxy = ax.errorbar([], [], yerr=[], xerr=[], marker='o', mfc="none", mec="red",
color='red', capthick=1, label="errorbar")
ax.legend(handles=[proxy], labels=["errorbar"])
plt.show()
我想绘制一些数据 x
和 y
,其中我需要标记大小取决于第三个数组 z
。我可以分别绘制它们(即,用 size = z
散布 x
和 y
,以及不带标记的错误栏 fmc = 'none'
),这解决了它。问题是我需要图例来同时显示错误栏和点:
而不是
这里有代码和一些虚构的数据:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1,10,100)
y = 2*x
yerr = np.random(0.5,1.0,100)
z = np.random(1,10,100)
fig, ax = plt.subplots()
plt.scatter(x, y, s=z, facecolors='', edgecolors='red', label='Scatter')
ax.errorbar(x, y, yerr=yerr, xerr=0, fmt='none', mfc='o', color='red', capthick=1, label='Error bar')
plt.legend()
plt.show()
这会产生我想避免的图例:
在 errorbar the argument
markersizedoes not accept arrays as
scatter` 中。
想法通常是使用代理放入图例。因此,虽然图中的误差线可能没有标记,但图例中的误差线有一个标记集。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1,10,11)
y = 2*x
yerr = np.random.rand(11)*5
z = np.random.rand(11)*2+5
fig, ax = plt.subplots()
sc = ax.scatter(x, y, s=z**2, facecolors='', edgecolors='red')
errb = ax.errorbar(x, y, yerr=yerr, xerr=0, fmt='none',
color='red', capthick=1, label="errorbar")
proxy = ax.errorbar([], [], yerr=[], xerr=[], marker='o', mfc="none", mec="red",
color='red', capthick=1, label="errorbar")
ax.legend(handles=[proxy], labels=["errorbar"])
plt.show()