gpt4 book ai didi

python - Pandas 的 Matplotlib 堆积直方图被一条奇怪的线切割

转载 作者:行者123 更新时间:2023-12-01 09:26:03 26 4
gpt4 key购买 nike

matplotlib 中发生了一些奇怪的事情。

我有一个 pandas 数据框,我正在使用它的两列制作一个堆叠直方图。一列是进入直方图箱的 float 。另一列只有0和1,用于将数据分成两个堆栈。我的实际代码有点复杂,但它是这样的:

print(df)

df =
col1 col2
1.7 1
2.4 0
3.1 0
4.0 1
etc etc

# First I separate the data by the 0's and 1's in col2
df_1 = df.loc[df['col2']==1]
df_0 = df.loc[df['col2']==0]
fig, axes =

使用 matplotlib 的直方图函数绘图可以正常工作。如果我这样称呼:

fig,axes= plt.subplots(nrows=1, ncols=1)

n,bins,patches= axes.hist( [ df_0['col1'], df_1['col1'] ] , histtype='step', stacked=True, Fill=True)

...我得到了这个非常好的情节:

Histogram 1: Works fine

但是,如果我在调用 hist() 时翻转 df_0 和 df_1 的顺序,就会发生非常奇怪的事情。就像我这样做一样:

n,bins,patches= axes[0].hist( [ df_1['col1'], df_0['col1'] ] , histtype='step', stacked=True, Fill=True)

enter image description here

...我得到了一个堆栈翻转的图(如预期),但现在该图出现了一个奇怪的工件;就像一条看不见的线正在切断图形的某些地方并用颜色填充。

这到底是怎么回事?我的第一个想法是,也许列 1 或列 2 有 NaN 值或其他值,但我检查了这些值,列值很好。关于可能导致此问题的任何想法?

最佳答案

fill 不是 hist 的有用参数。这是一个有效的参数,因为您可以填充 matplotlib 中的任何补丁。然而,这里没有一个封闭的补丁需要填充。

相反,您可能正在寻找 histogram_histtypes example 中显示的不同 histt​​ype 选项。 .

  • histt​​ype="stepfilled"
  • histt​​ype='bar'

在这种情况下,它们都给出相同的图,

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

a = np.random.rayleigh(size=20)
b = np.random.randn(20)+3
df = pd.DataFrame({"col1" : np.concatenate((a,b)),
"col2" : [0]*20 + [1]*20})

df_1 = df.loc[df['col2']==1]
df_0 = df.loc[df['col2']==0]

fig,axes= plt.subplots(ncols=2)

n,bins,patches= axes[0].hist([df_0['col1'], df_1['col1']], histtype='stepfilled', stacked=True)
n,bins,patches= axes[1].hist([df_0['col1'], df_1['col1']], histtype='bar', stacked=True)

plt.show()

enter image description here

关于python - Pandas 的 Matplotlib 堆积直方图被一条奇怪的线切割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50384961/

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