Как залить цвет по группам в гистограмме с помощью Matplotlib? - PullRequest
1 голос
/ 17 июня 2019

Я знаю, как сделать это в R и предоставил код для этого ниже.Я хочу знать, как я могу сделать что-то похожее на приведенное ниже в Python Matplotlib или использовать любую другую библиотеку

library(ggplot2)
ggplot(dia[1:768,], aes(x = Glucose, fill = Outcome)) +
  geom_bar() +
  ggtitle("Glucose") +
  xlab("Glucose") +
  ylab("Total Count") +
  labs(fill = "Outcome")

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Используя панды, вы можете поворачивать информационный кадр и напрямую наносить его на график.

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

# dataframe with two columns in "long form"
g = np.array([np.random.normal(5, 10, 500),
              np.random.rayleigh(10, size=500)]).flatten()
df = pd.DataFrame({'Glucose': g, 'Outcome': np.repeat([0,1],500)})

# pivot and plot
df.pivot(columns="Outcome", values="Glucose").plot.hist(bins=100)

plt.show()

enter image description here

0 голосов
/ 18 июня 2019

Пожалуйста, рассмотрите следующий пример, который использует seaborn .

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

# generate random data
data = {'Glucose': np.random.normal(5, 10, 100),
        'Outcome': np.random.randint(2, size=100)}
df = pd.DataFrame(data)

# plot
fig, ax = plt.subplots(figsize=(10, 10))
for group in df.Outcome.unique():
    sns.distplot(df.loc[df.Outcome == group, 'Glucose'],
                 kde=False, ax=ax, label=group)

ax.set_xlabel('Glucose')
ax.set_ylabel('Total Count')
ax.set_title('Glucose')
ax.legend()
...