Линейный график, который непрерывно меняет прозрачность - Matplotlib - PullRequest
0 голосов
/ 28 апреля 2020

I sh для создания однострочного графика в Matplotlib, который имеет переменную прозрачность, т. Е. Он начинается с цвета solid до полностью прозрачного цвета.

Я пробовал это, но это не сработало.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2 * np.pi, 500)
y = np.sin(x)
alphas = np.linspace(1, 0, 500)
fig, ax = plt.subplots(1, 1)
ax.plot(x, y, alpha=alphas)

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Я не знаю, как это сделать в matplotlib, но это возможно в Альтаир :

import numpy as np
import pandas as pd
import altair as alt
x = np.linspace(0, 2 * np.pi, 500)
y = np.sin(x)
alt.Chart(
    pd.DataFrame({"x": x, "y": y, "o": np.linspace(0, 1, len(x))}),
).mark_point(
).encode(
    alt.X("x"),
    alt.Y("y"),
    alt.Opacity(field="x", type="quantitative", scale=alt.Scale(range=[1, 0]), legend=None),
)

Результат: enter image description here

0 голосов
/ 08 мая 2020

Единственное решение, которое я нашел, состояло в том, чтобы построить каждый сегмент независимо с различной прозрачностью

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2 * np.pi, 500)
y = np.sin(x)
alphas = np.linspace(1, 0, 499)
fig, ax = plt.subplots(1, 1)
for i in range(499):
    ax.plot(x[i:i+2], y[i:i+2], 'k', alpha=alphas[i])

Но мне это не нравится ... Может быть, этого достаточно для кого-то

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...