gpt4 book ai didi

python - 如何使用数据集(nd.array)在散点图中对误差条(x 和 y)进行颜色映射?

转载 作者:行者123 更新时间:2023-12-03 17:11:19 24 4
gpt4 key购买 nike

我正在尝试创建一个带有 x 和 y 误差的散点图,它们在四个部分中具有不同的标记和误差条颜色(例如,红色表示 x=0 到 x=2,蓝色表示 x=2 到 c=5,等等)。我使用了带有标记边界的颜色图,但我无法对错误栏做类似的事情。我尝试使用 this answer to a similar question 将散点图颜色图中的标记、误差条和大写设置为相同的颜色。 ,但我无法让它为我的代码工作(出现关于数据长度不匹配或无法转换为元组的错误)。我想我无法为我用于标记的颜色图正确修改它,或者这不是获得正确结果的最佳方法。
这是一个包含一些虚构数据的示例:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors

bounds = [0,1.5,3,4.5,5]
colors = ["r", "b", "g", "y"]
cmap = matplotlib.colors.ListedColormap(colors)
norm = matplotlib.colors.BoundaryNorm(bounds, len(colors))

x = np.array([0.0, 0.0, 1.0, 2.0, 2.0, 3.0, 4.0, 4.0, 5.0, 5.0])
y = np.array([0.0, 0.1, 0.8, 0.9, 0.7, 0.1, -0.8, -0.5, -1.0, -0.7])
x_err = np.array([0.05, 0.06, 0.04, 0.045, 0.04, 0.06, 0.05, 0.055, 0.02, 0.05])
y_err = np.array([0.04, 0.05, 0.03, 0.055, 0.145, 0.065, 0.045, 0.15, 0.015, 0.17])

plt.scatter(x, y, marker='D', c=x, cmap=cmap, norm=norm)
plt.errorbar(x, y, xerr=x_err, yerr=y_err, fmt='.', lw=2, capsize=3, alpha=0.7, zorder=0)

plt.show()
这使
this .
如何让误差条与散点图中使用的颜色图具有相同的颜色图?

最佳答案

这当然不是最快的方法,但它有效:使用 to_rgba 获取每个 x 值的颜色然后逐点绘制误差线(对于大型数据数组可能很慢):

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
import matplotlib.cm

bounds = [0,1.5,3,4.5,5]
colors = ["r", "b", "g", "y"]
cmap = matplotlib.colors.ListedColormap(colors)
norm = matplotlib.colors.BoundaryNorm(bounds, len(colors))

x = np.array([0.0, 0.0, 1.0, 2.0, 2.0, 3.0, 4.0, 4.0, 5.0, 5.0])
y = np.array([0.0, 0.1, 0.8, 0.9, 0.7, 0.1, -0.8, -0.5, -1.0, -0.7])
x_err = np.array([0.05, 0.06, 0.04, 0.045, 0.04, 0.06, 0.05, 0.055, 0.02, 0.05])
y_err = np.array([0.04, 0.05, 0.03, 0.055, 0.145, 0.065, 0.045, 0.15, 0.015, 0.17])

plt.scatter(x, y, marker='D', c=x, cmap=cmap, norm=norm)

colors = matplotlib.cm.ScalarMappable(norm,cmap).to_rgba(x)
for i,_ in enumerate(x):
plt.errorbar(x[i], y[i], xerr=x_err[i], yerr=y_err[i], fmt='.', lw=2, capsize=3, alpha=0.7, zorder=0, ecolor=colors[i])

plt.show()
enter image description here

关于python - 如何使用数据集(nd.array)在散点图中对误差条(x 和 y)进行颜色映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62963751/

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