Построение гистограммы морского дна из каждого столбца на разных участках (фазовая сетка) - PullRequest
1 голос
/ 08 марта 2019

Моя структура выглядит следующим образом: DataFrame:

n    X              Y          Z
0   1.000000    1.000000    1.014925    
1   1.000000    1.000000    1.000000    

Я хочу создать M отдельных графиков (гистограмма) из каждого столбца.Одна гистограмма будет из X, одна из Y и последняя из Z.

Я бы хотел, чтобы она была на отдельных графиках.Я искал https://seaborn.pydata.org/generated/seaborn.FacetGrid.html,, но я не понимаю синтаксиса / логики, как построить его из моих данных.

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Вы можете использовать встроенный метод plot вашего фрейма данных pandas и опцию subplots=True для построения по столбцу

from io import StringIO
import pandas as pd
import matplotlib.pyplot as plt
plt.style.use('seaborn')

# Here I read your example data in
df = pd.read_fwf(StringIO("""
    X              Y          Z
0   1.000000    1.000000    1.014925    
1   1.000000    1.000000    1.000000
"""), header=1, index_col=0)

# Plotting as desired
df.plot.hist(subplots=True, legend=False)

enter image description here

df.plot принимает множество других аргументов, чтобы вы могли легко изменить свой график, например,

df.plot.hist(subplots=True, legend=True, layout=(1, 3))

enter image description here

1 голос
/ 08 марта 2019

Использование seaborn.FacetGrid может потребовать от вас реструктуризации данных.

Давайте рассмотрим пример:

np.random.seed(0)
df = pd.DataFrame(np.random.randn(1000, 3), columns=['X', 'Y', 'Z'])
print(df.head(10))

          X         Y         Z
0  1.764052  0.400157  0.978738
1  2.240893  1.867558 -0.977278
2  0.950088 -0.151357 -0.103219
3  0.410599  0.144044  1.454274
4  0.761038  0.121675  0.443863
5  0.333674  1.494079 -0.205158
6  0.313068 -0.854096 -2.552990
7  0.653619  0.864436 -0.742165
8  2.269755 -1.454366  0.045759
9 -0.187184  1.532779  1.469359

df_stacked = df.stack().reset_index(1).rename({'level_1': 'column', 0: 'values'}, axis=1)

print(df_stacked.head(10))

  column    values
0      X  1.764052
0      Y  0.400157
0      Z  0.978738
1      X  2.240893
1      Y  1.867558
1      Z -0.977278
2      X  0.950088
2      Y -0.151357
2      Z -0.103219
3      X  0.410599


g = sns.FacetGrid(df_stacked, row='column')
g.map(plt.hist, 'values')

[out]

enter image description here

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