【问题标题】:Overlapping density plots of multiple pandas data frame columns多个熊猫数据框列的重叠密度图
【发布时间】:2019-10-15 14:07:09
【问题描述】:
import numpy as np
import pandas as pd

col1 = np.random.normal(0, 1, (1000, ))
col2 = np.random.normal(0, 1, (1000, ))
col3 = np.random.normal(0, 1, (1000, ))
df = pd.DataFrame({'col1':col1, 'col2':col2, 'col3':col3})
  • 将每一列绘制为连续线
  • 在同一轴上绘制所有 3 列
  • 使用不同颜色的线条(无填充)

提前致谢!

【问题讨论】:

  • 如果您想要平滑线条,您可能需要核密度估计图 (KDE)。那将是 'df.plot.kde()' 你可以在link看到一个例子@

标签: python python-2.7 matplotlib plot histogram


【解决方案1】:

我明白你的问题!下面是我在 matplotlib 中的做法。

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

col1 = np.random.normal(0, 1, (1000, ))
col2 = np.random.normal(1, 1, (1000, ))
col3 = np.random.normal(-1, 1, (1000, ))
df = pd.DataFrame({'col1':col1, 'col2':col2, 'col3':col3})

df['col1_bins'] = pd.cut(df['col1'], bins=np.arange(-10, 11, 0.5))
df['col2_bins'] = pd.cut(df['col2'], bins=np.arange(-10, 11, 0.5))
df['col3_bins'] = pd.cut(df['col3'], bins=np.arange(-10, 11, 0.5))

col1_counts = df[['col1_bins', 'col1']].groupby(['col1_bins']).count().reset_index()
col2_counts = df[['col2_bins', 'col1']].groupby(['col2_bins']).count().reset_index()
col3_counts = df[['col3_bins', 'col1']].groupby(['col3_bins']).count().reset_index()

plt.plot(col1_counts['col1_bins'].astype(str), col1_counts['col1'], 'r')
plt.plot(col2_counts['col2_bins'].astype(str), col2_counts['col1'], 'b')
plt.plot(col3_counts['col3_bins'].astype(str), col3_counts['col1'], 'g')

基本上,您必须先对数据点进行分类,然后才能绘制它们。

【讨论】:

    猜你喜欢
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2022-06-10
    相关资源
    最近更新 更多