gpt4 book ai didi

python - 使用 matplotlib 在一个子图中绘制来自 pandas DataFrame 的两个直方图

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:13 24 4
gpt4 key购买 nike

我有一个如下所示的 Pandas 数据框:

df = pd.DataFrame({ 'a_wood' : np.random.randn(100),
'a_grassland' : np.random.randn(100),
'a_settlement' : np.random.randn(100),
'b_wood' : np.random.randn(100),
'b_grassland' : np.random.randn(100),
'b_settlement' : np.random.randn(100)})

我想用一个子图中的每个数据帧标题创建此数据的直方图。

fig, ax = plt.subplots(2, 3, sharex='col', sharey='row')

m=0
for i in range(2):
for j in range(3):

df.hist(column = df.columns[m], bins = 12, ax=ax[i,j], figsize=(20, 18))
m+=1

为此,之前的代码可以完美运行,但现在我想将 eyery a 和 b header (例如“a_woods”和“b-woods”)组合到一个子图中,因此只有三个直方图。我尝试将两列分配给 df.columns[[m,m+3]] 但这不起作用。我还有一个索引列,其中包含像“day_1”这样的字符串,我希望它位于 x 轴上。有人可以帮助我吗?

这就是我得到的结果。 Histogram

最佳答案

我不知道我是否正确理解了你的问题,但像这样的东西可以结合情节。您可能想尝试一下 alpha 并更改 header 。

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

df = pd.DataFrame({'a_wood' : np.random.randn(100),
'a_grassland' : np.random.randn(100),
'a_settlement' : np.random.randn(100),
'b_wood' : np.random.randn(100),
'b_grassland' : np.random.randn(100),
'b_settlement' : np.random.randn(100)})

fig, ax = plt.subplots(1, 3, sharex='col', sharey='row', figsize=(20, 18))
n = 3
n_bins = 12

for i in range(n):
min_value = df.iloc[:,[i,i+n]].min().min() #Get minimum value of column pairs, e.g. column 0 (a_wood) and column 3 (b_wood)
max_value = df.iloc[:,[i,i+n]].max().max() #Get maximum value of column pairs
bins = np.linspace(min_value, max_value, n_bins) #Create bins of equal size between min_value and max_value

df.hist(column=df.columns[i], bins=bins, ax=ax[i], alpha=0.5, color='red')
df.hist(column=df.columns[i+n], bins=bins, ax=ax[i], alpha=0.5, color='blue')
ax[i].set_title(df.columns[i][2:])

Histogram with columns overlapping

要将它们绘制在彼此旁边,试试这个:

#We do not have to specify the bins in this example
fig, ax = plt.subplots(1, 3, sharex='col', sharey='row', figsize=(20, 18))

n = 3
colors = ['red', 'blue']

axes = ax.flatten()
for i,j in zip(range(n), axes):
j.hist([df.iloc[:,i], df.iloc[:,i+n]], bins=12, color=colors)
j.set_title(df.columns[i][2:])

Histogram with columns next to eachother

关于python - 使用 matplotlib 在一个子图中绘制来自 pandas DataFrame 的两个直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51749208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com