Как построить вертикальный участок с пандами - PullRequest
0 голосов
/ 11 июня 2018

Есть ли прямой способ построения графика площади с использованием панд, но ориентация графика по вертикали?

Например, для построения графика области по горизонтали, я могу сделать это:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot(kind='area');

enter image description here

Я могу построить гистограмму вертикально с помощью 'barh'

df.plot(kind='barh');

enter image description here

Но я не могу придумать простой способ получить вертикальный участок площади

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Причина, по которой pandas не предоставляет график вертикального стека, состоит в том, что matplotlib stackplot предназначен только для горизонтальных стеков.

Тем не менее, стековый график - это не что иное, как заполненный линейный график в конце.Таким образом, вы получите желаемый график, нанеся на график данные с fill_betweenx().

import pandas as pd
import numpy as np; np.random.rand(42)
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])

fig, ax = plt.subplots()

data = np.cumsum(df.values, axis=1)
for i, col in enumerate(df.columns):
    ax.fill_betweenx(df.index, data[:,i], label=col, zorder=-i)
ax.margins(y=0)
ax.set_xlim(0, None)
ax.set_axisbelow(False)

ax.legend()


plt.show()

enter image description here

0 голосов
/ 11 июня 2018

(должно быть лучшее решение)

Сюжет - Повернуть на 90 - Отразить по вертикали

import matplotlib.pyplot as plt
from matplotlib import pyplot, transforms

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
base = plt.gca().transData
rot = transforms.Affine2D().rotate_deg(90)
reflect_vertical = transforms.Affine2D(np.array([[1, 0, 0], [0, -1, 0], [0, 0, 1]]))
df.plot(kind='area', transform= reflect_vertical + rot + base, ax=plt.gca(), xlim=(0, 3))
plt.gca().set_aspect(0.5)

enter image description here

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