我尝试使用下面的代码将errorbar的颜色与数据点的颜色进行匹配,但我得到了以下错误
提升ValueError("RGBA序列长度应为3或4")
ValueError: RGBA序列的长度应为3或4
我做错了什么?我们将非常感谢您提出的任何建议。
数据格式:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.style
import matplotlib.font_manager
data = pd.read_csv('error_data')
size = data['size']
x = data['x']
y = data['y']
error = data['error']
plot_xy = plt.scatter(x, y ,s=20,c=size, alpha=0.5)
colors = plt.colorbar(plot_xy)
size_colors = mpl.colors.to_rgba(size)
for x, y, e, color in zip(x, y, error ,colors):
plt.errorbar(x, y, e, lw=1, capsize=3, color=color, alpha=0.5)
plt.show()发布于 2020-03-05 20:34:19
谢谢你的帮助。我设法通过改编这个问题Colormap for errorbars in x-y scatter plot using matplotlib中的代码(如下所示)来让它工作
import matplotlib.pyplot as plt
import numpy as np
#data
time = np.arange(100.)
signal = time**2
error = np.ones(len(time))*1000
#create a scatter plot
sc = plt.scatter(time,signal,s=0,c=time)
#create colorbar according to the scatter plot
clb = plt.colorbar(sc)
#convert time to a color tuple using the colormap used for scatter
import matplotlib
import matplotlib.cm as cm
norm = matplotlib.colors.Normalize(vmin=min(signal), vmax=max(signal), clip=True)
mapper = cm.ScalarMappable(norm=norm, cmap='viridis')
time_color = np.array([(mapper.to_rgba(v)) for v in signal])
#loop over each data point to plot
for x, y, e, color in zip(time, signal, error, time_color):
plt.plot(x, y, 'o', color=color)
plt.errorbar(x, y, e, lw=1, capsize=3, color=color)https://stackoverflow.com/questions/60531162
复制相似问题