Как построить кривые и погрешности одного цвета в holoviews с помощью matplotlib? - PullRequest
0 голосов
/ 16 мая 2019

Я хочу построить кривую с барами ошибок в holoviews, используя matplotlib бэкэнд. Мне бы хотелось, чтобы кривая и столбцы ошибок были одного цвета, но без явного указания цвета для кривой. То есть Я могу легко сделать это

import holoviews as hv
hv.extension("matplotlib")

means = [1, 4, 2, 3]
errors = [0.3, 0.5, 0.2, 0.1]
color = "green"
mean_plot = hv.Curve(means).opts(color=color)
err_plot = hv.ErrorBars((range(len(means)), means, errors)).opts(edgecolor=color)
mean_plot * err_plot

чтобы получить

enter image description here

но что, если мне дали mean_plot и я еще не знал его цвет? Я уверен, что текущие параметры должны храниться где-то в экземпляре, но я не знаю, как получить к ним доступ. Я хотел бы сделать что-то вроде

mean_color = mean_plot.<access_options_somehow>.color
err_plot = hv.ErrorBars((range(len(means)), means, errors)).opts(edgecolor=mean_color)

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Основываясь на ответе @ Sheldore и моих комментариях, вот подход, который сначала переводит элемент holoviews в matplotlib фигуру, а затем находит там цвет.Это не очень элегантно, и я думаю, что должен быть более хороший способ, но он выполняет свою работу.

import holoviews as hv
hv.extension("matplotlib")

means = [1, 4, 2, 3]
errors = [0.3, 0.5, 0.2, 0.1]
color = "green"
mean_plot = hv.Curve(means).opts(color=color)

fig = hv.render(mean_plot)
ax = fig.axes[0]
line = ax.get_lines()[0]
mean_color = line.get_color()

err_plot = hv.ErrorBars((range(len(means)), means, errors)).opts(edgecolor=mean_color)
mean_plot * err_plot
0 голосов
/ 16 мая 2019

У меня не установлено holoviews, но поскольку оно использует matplotlib, вы можете попробовать универсальное решение, чтобы извлечь цвет линии, а затем использовать его для построения полос ошибок

mean_plot = hv.Curve(means) # Don't specify any color here
mean_color = mean_plot[0].get_color() # Extract the default color
err_plot = hv.ErrorBars((range(len(means)), means, errors)).opts(edgecolor=mean_color)
...