【问题标题】:Seaborn plot two data sets on the same scatter plotSeaborn 在同一个散点图上绘制两个数据集
【发布时间】:2019-01-14 21:40:30
【问题描述】:

我在 Pandas Dataframe 中有 2 个数据集,我想在同一个散点图上将它们可视化,所以我尝试了:

import matplotlib.pyplot as plt
import seaborn as sns

sns.pairplot(x_vars=['Std'], y_vars=['ATR'], data=set1, hue='Asset Subclass')
sns.pairplot(x_vars=['Std'], y_vars=['ATR'], data=set2, hue='Asset Subclass')
plt.show()

但我总是得到 2 个单独的图表而不是一个 如何在同一个图上可视化两个数据集?我也可以为两个数据集设置相同的图例,但为第二个数据集设置不同的颜色吗?

【问题讨论】:

  • 第一个问题,你能把数据集连接起来吗?
  • @Charlie 我可以,但是我必须创建另一列来区分数据集?
  • 可以发一下set1和set2的样张吗?
  • 您使用的是哪个版本的 seaborn? '0.9.0' 有一个散点图功能,可以使这更容易
  • 似乎是一个合理的问题 - 恰好对我有用。

标签: python python-3.x pandas matplotlib seaborn


【解决方案1】:

以下内容应适用于最新版本的seaborn (0.9.0)

import matplotlib.pyplot as plt
import seaborn as sns

首先,我们将两个数据集连接成一个并分配一个dataset 列,这将允许我们保留关于哪一行来自哪个数据集的信息。

concatenated = pd.concat([set1.assign(dataset='set1'), set2.assign(dataset='set2')])

然后我们使用最新 seaborn 版本 (0.9.0) 中的 sns.scatterplot 函数并通过 style 关键字参数设置它,以便标记基于 dataset 列:

sns.scatterplot(x='Std', y='ATR', data=concatenated,
                hue='Asset Subclass', style='dataset')
plt.show()

【讨论】:

  • 完美!这就是我一直在寻找的。​​span>
  • 这并不总是必需的。您可以轻松地在同一轴上以不同的颜色和样式绘制不同的数据框。 @MichaelDz
  • 很高兴它帮到了你! @harvpan,不太清楚你的意思。你的意思是pd.concat 调用是不必要的,而是可以只写两个调用 sns.scatterplot 或plt.scatter
  • 是的@tobsecret,这就是我的意思。连接可能在计算上很敏感,并且会占用大量内存。
  • 公平点,但如果你的数据集足够大,可以让你进入计算敏感的绘图领域,那么由于过度绘图的问题,你可能不得不选择像 datashader 这样的东西。在问题给出的示例图中,点的数量似乎有数百个,因此串联不应成为限制因素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
  • 2011-05-15
相关资源
最近更新 更多