Цветовая карта для панелей ошибок - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь сопоставить цвет полос ошибок с цветом точек данных, используя приведенный ниже код, но получаю следующую ошибку

повышение ValueError («последовательность RGBA должна иметь длину 3 или 4» )

ValueError: RGBA-последовательность должна иметь длину 3 или 4

Что я делаю не так? Любой совет будет принят с благодарностью.

Формат данных:

enter image description here

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()

1 Ответ

0 голосов
/ 05 марта 2020

Спасибо за помощь. Мне удалось заставить его работать, адаптировав код (показанный ниже) из этого вопроса Цветовая карта для панелей ошибок на графике рассеяния xy с использованием 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...