Python分类气泡图

Python分类气泡图,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,我有一个12x17数据帧,想创建一个分类气泡图,如下所示: (来自) 我的数据框架基本上如下所示: # A B C # X 0.3 0.2 0.4 # Y 0.1 0.4 0.1 我不能使用matplotlib.scatter,因为它不接受分类输入,创建假值也不起作用,因为它不是n*n。或者我可以吗?我想不出来。我找到了seaborn.stripplot,它接受一个分类输入,但所有气泡的大小都相同,所以我被卡住了 你知道我如何用python创建

我有一个12x17数据帧,想创建一个分类气泡图,如下所示:

(来自)

我的数据框架基本上如下所示:

#      A     B     C
# X   0.3   0.2   0.4
# Y   0.1   0.4   0.1
我不能使用matplotlib.scatter,因为它不接受分类输入,创建假值也不起作用,因为它不是n*n。或者我可以吗?我想不出来。我找到了seaborn.stripplot,它接受一个分类输入,但所有气泡的大小都相同,所以我被卡住了


你知道我如何用python创建这样一个情节吗?非常感谢。

我认为
散点图非常适合创建这种分类气泡图

创建数据帧:

import pandas as pd
df = pd.DataFrame([[.3,.2,.4],[.1,.4,.1]], columns=list("ABC"), index=list("XY"))
选项1:取消堆叠数据帧 这将创建一个类似

   X  Y    S
0  A  X  0.3
1  A  Y  0.1
2  B  X  0.2
3  B  Y  0.4
4  C  X  0.4
5  C  Y  0.1
可以按列绘制。由于散射体的大小是点,因此需要将
S
列乘以一些较大的数字,如5000,以获得较大的气泡

import matplotlib.pyplot as plt
dfu["S"] *= 5000
plt.scatter(x="X", y="Y", s="S", data=dfu)
plt.margins(.4)
plt.show()
选项2:创建网格 例如,使用numpy,可以创建数据帧列和索引的网格,这样就可以绘制平坦网格的散布。同样,需要将数据帧值乘以一些大的数字

import numpy as np
import matplotlib.pyplot as plt

x,y = np.meshgrid(df.columns, df.index)

df *= 5000
plt.scatter(x=x.flatten(), y=y.flatten(), s=df.values.flatten())
plt.margins(.4)
plt.show()
在这两种情况下,结果都是


我认为
散点图非常适合创建这种分类气泡图

创建数据帧:

import pandas as pd
df = pd.DataFrame([[.3,.2,.4],[.1,.4,.1]], columns=list("ABC"), index=list("XY"))
选项1:取消堆叠数据帧 这将创建一个类似

   X  Y    S
0  A  X  0.3
1  A  Y  0.1
2  B  X  0.2
3  B  Y  0.4
4  C  X  0.4
5  C  Y  0.1
可以按列绘制。由于散射体的大小是点,因此需要将
S
列乘以一些较大的数字,如5000,以获得较大的气泡

import matplotlib.pyplot as plt
dfu["S"] *= 5000
plt.scatter(x="X", y="Y", s="S", data=dfu)
plt.margins(.4)
plt.show()
选项2:创建网格 例如,使用numpy,可以创建数据帧列和索引的网格,这样就可以绘制平坦网格的散布。同样,需要将数据帧值乘以一些大的数字

import numpy as np
import matplotlib.pyplot as plt

x,y = np.meshgrid(df.columns, df.index)

df *= 5000
plt.scatter(x=x.flatten(), y=y.flatten(), s=df.values.flatten())
plt.margins(.4)
plt.show()
在这两种情况下,结果都是


非常感谢您的帮助!那就容易多了!尝试了此操作,但它引发了以下错误:
ValueError:无法将字符串转换为浮点:“Y”
@p0712您可能正在使用旧版本的matplotlib,需要更新到至少matplotlib 2.1才能正常工作。非常感谢您的帮助!那就容易多了!尝试了此操作,但它引发了以下错误:
ValueError:无法将字符串转换为浮点:“Y”
@p0712您可能正在使用旧版本的matplotlib,需要更新到至少matplotlib 2.1才能正常工作。