【问题标题】:Python bubble chart that shows frequency or weight of bubble (I don't have a z vector)? [closed]显示气泡频率或重量的 Python 气泡图(我没有 z 向量)? [关闭]
【发布时间】:2021-03-26 19:13:34
【问题描述】:

我想制作两个分类变量(均为 0 和 1)的散点图,但是当我在 python 中制作普通散点图时,只有四个大小相同的点。我所拥有的只是一个带有两列(A 和 B)的 pandas 数据框,每列都是 0 和 1。

https://pypi.org/project/bubble-plot/

我运行了类似于上面链接中的示例

bubble_plot(df, x = 'A', y = 'B')

我认为它给了我想要的东西,但我不知道如何获得一个说明尺寸或颜色含义的图例。

关于如何获得带有图例的气泡图的任何想法?

谢谢!

【问题讨论】:

标签: python pandas matplotlib plot data-visualization


【解决方案1】:

只有四个大小相同的点

好吧,在您的具体情况下,x 值和 y 值都仅包含 [0,1,1,0,..],因此 bubble_plot() 只能向您显示位于 [0,0], [0,1], [1,0], [1,1] 的气泡。不同的大小为您提供了“A”列和“B”列的相关性,即[1,0] 处的气泡大小显示在“A”列中有多少行有一个1,在列中有一个0 'B'。

如果您添加import matplotlib.pyplot as pltplt.colorbar(),您将能够看到颜色与尺寸的含义相同:

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

np.random.seed(2020)

A = np.random.choice([0,1],size=50)
B = np.random.choice([0,1],size=50)

df = pd.DataFrame({'A':A, 'B':B})

bubble_plot(df, x='A', y='B')

plt.colorbar()
plt.show()

如果您要使用h = plt.hist2d(df['A'], df['B'], bins=2) 而不是bubble_plot(),您可以使用print(h[0]) 来获取分发信息:

[[13. 15.]
 [14.  8.]]

或者,归一化print(h[0]/h[0].sum())

[[0.26 0.3 ]
 [0.28 0.16]]

即在 16% 的数据集中,df['A'] 中的 1df['B'] 中的 0 相关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-08
    • 2016-02-13
    • 2013-10-31
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    相关资源
    最近更新 更多