Pandas - повторить vline в подфлотах Dataframe - PullRequest
1 голос
/ 23 апреля 2020

У меня есть субплот 2x3, показывающий гистограммы из кадра данных Pandas. Я хотел бы добавить vline на каждую из этих гистограмм. Вы можете видеть, что только последний субплот показывает вертикальную линию, вот и ошибка ...

2-я проблема: я пропускаю x_labels в 1-м ряду субплота?

Есть идеи для решения проблема? С уважением, Пэр

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns

params = {"axes.titlesize": "10", "xtick.labelsize": "8", "ytick.labelsize": "8"}
matplotlib.rcParams.update(params)

mu, sigma = 0, 0.1  # mean and standard deviation
nse = np.random.normal(mu, sigma, 1000)

df = pd.DataFrame(
    {
        "Stringer 1": nse,
        "Stringer 3": nse * 2,
        "Stringer 5": nse * 4,
        "Stringer 7": nse,
        "Stringer 8": nse * 6,
    }
)


# Layout für Diagramme
fig, ax = plt.subplots(2, 3, sharex="col", sharey="row")


m = 0
for i in range(2):
    for j in range(3):
        h = df.hist(column=df.columns[m], bins=50, ax=ax[i, j], grid=False)
        plt.axvline(1, color="yellow")
        m += 1

fig.set_facecolor("w")

plt.tight_layout()
plt.show()

enter image description here

1 Ответ

0 голосов
/ 23 апреля 2020

plt.subplots дает вам цифру и массив ax. Затем вы можете выполнить итерации осей и вашего DataFrame вместе, используя zip.

# Removing `sharex` puts the x labels on each row
fig, axes = plt.subplots(2, 3, sharey="row")

for col, ax in zip(df.columns, axes.flatten()):
    # Set title
    ax.set_title(col)
    # Plot histogram
    ax.hist(df[col], bins=50)
    # Add vline
    ax.axvline(1, color="y")
    # Adjust spacing
    plt.subplots_adjust(wspace=.5, hspace=.5)

plt.tight_layout()
plt.show()

Grid of histograms

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