Как показать только контур гистограммы matplotlib - PullRequest
2 голосов
/ 22 декабря 2019

Я строю данные в виде гистограммы в matplotlib и пытаюсь показать только контур гистограммы, чтобы он отображался как «ступенчатый график» данных.

Я добавил свой код ниже вместе с изображением желаемого результата.

plt.bar(x, y, align='center', width=0.1, edgecolor='black', color='none')

Сюжет у меня:

Current Plot

Сюжет, который я хотел бы:

enter image description here


Существуют ли другие библиотеки, которые могутбыть в состоянии произвести это? Кажется, что аргументы bar не имеют ничего, что может.

1 Ответ

2 голосов
/ 22 декабря 2019

Ваше изображение выглядит как функция, которая расположена горизонтально вокруг каждого значения x, y. Следующий код имитирует это:

  • для каждого x, y: создайте две новые точки, одну в x-0.5 и одну в x + 0.5, обе с одинаковым y
  • для закрытияформу на концах, добавить (x [0] -0,5, 0) в начале и (x [-1] +0,5, 0) в конце.
import numpy as np
from matplotlib import pyplot as plt

x = np.arange(0, 30, 1)
y = np.random.uniform(2, 10, 30)
xs = [x[0] - 0.5]
ys = [0]
for i in range(len(x)):
    xs.append(x[i] - 0.5)
    xs.append(x[i] + 0.5)
    ys.append(y[i])
    ys.append(y[i])
xs.append(x[-1] + 0.5)
ys.append(0)
plt.plot(xs, ys, color='dodgerblue')
# optionally color the area below the curve
plt.fill_between(xs, 0, ys, color='gold')

PS:@AsishM. в комментариях упоминается, что у matplotlib также есть своя пошаговая функция. Если эта функция выполняет, пожалуйста, используйте эту. Если вам нужен дополнительный контроль или вариация, этот ответ может дать начало, например, закрасить область под кривой или обработать фигуру на концах.

example plot

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