Полоса ошибок перекрывает прозрачность графика

На графике matplotlib с полосой ошибок основная линия, маркеры и полосы ошибок одного цвета перекрывают друг друга по их счетчику, когда я использую альфа-параметр. Хотя моя цель состояла в том, чтобы иметь прозрачность между двумя разными цветами, но не внутри одного цвета, как если бы линии одного цвета, маркеры и полосы ошибок были только одним объектом. Это возможно?

import matplotlib.pyplot as plt
import numpy as np

Time = np.array([1, 2, 3])
Green = np.array([3, 5, 9])
Blue = np.array([4, 7, 13])

Green_StDev = np.array([0.6, 0.6, 0.7])
Blue_StDev = np.array([0.5, 0.5, 0.6])

plt.errorbar(Time, Green, Green_StDev, marker='o', c='green', alpha=0.5)

plt.errorbar(Time, Blue, Blue_StDev, marker='o', c='blue', alpha=0.5)

plt.show()

введите здесь описание изображения

Как в примере ниже, но с прозрачностью только между объектами разного цвета, в отличие от примера выше.

введите здесь описание изображения


person haperes    schedule 07.01.2020    source источник
comment
Я не могу понять... Вы хотите, чтобы прозрачность была только на перекрывающихся маркерах?   -  person Alessandro Peca    schedule 08.01.2020
comment
Между всеми объектами одного и того же цвета другого цвета, но нет прозрачности на объектах одного цвета   -  person haperes    schedule 08.01.2020


Ответы (1)


Я думаю, вы не можете рисовать их как один объект, поскольку они (маркер и полоса ошибок) рисуются индивидуально. Однако, чтобы сделать его более «эстетичным», вы можете перерисовать непрозрачный маркер:

import matplotlib.pyplot as plt
import numpy as np

Time = np.array([1, 2, 3])
Green = np.array([3, 5, 9])
Blue = np.array([4, 7, 13])

Green_StDev = np.array([0.6, 0.6, 0.7])
Blue_StDev = np.array([0.5, 0.5, 0.6])

plt.errorbar(Time, Green, Green_StDev, marker='o', c='green', alpha=0.5)
# Add additional marker
plt.scatter(Time, Green,marker='o', c='green')

plt.errorbar(Time, Blue, Blue_StDev, marker='o', c='blue', alpha=0.5)
# Add additional marker
plt.scatter(Time, Blue, marker='o', c='blue')

plt.show()

Вывод

person mrzo    schedule 08.01.2020
comment
Не совсем то, что я ищу. Затем маркеры будут иметь немного другой цвет, и, если они перекрываются, один закрывает другой, поскольку они непрозрачны. - person haperes; 08.01.2020
comment
Как насчет того, чтобы использовать разные стили маркеров для каждой линии (кресты или точки вместо больших кругов), чтобы они не полностью перекрывали друг друга? - person mrzo; 09.01.2020
comment
Да, это хороший способ обрисовать ситуацию. В любом случае, это тема для размышления разработчиков. Спасибо друг - person haperes; 10.01.2020