如何在python / matplotlib中制作居中的气泡图

时间:2015-03-04 19:42:50

标签: python pandas matplotlib visualization seaborn

我正在尝试在matplotlib / python中制作一个与此相似的居中气泡图。

enter image description here

有些人称它为“底部对齐的气泡图”,到目前为止,我基本上找到了一种做同心圆散点图的方法。

%matplotlib inline
import matplotlib.pyplot as plt
s = [ 50000.,10478.2, 4733.4,3185.3,2484.7,2310.9]
x = [1]*len(s)
y = [0]*len(s);
plt.scatter(x,y,s=s);
plt.show()

关于如何排列这些同心旋风的底边的任何想法?

1 个答案:

答案 0 :(得分:4)

我会直接与matplotlib艺术家互动。我还要将每个圆的半径 - 因此也就是中心 - 设置为群体的平方根。

这是因为,对于一个圈子A ~ r^2,如果r ~ population,您将严重扭曲尺寸差异。

所以说:

%matplotlib inline
import numpy
import matplotlib.colors as mcolors
import matplotlib.pyplot as plt
import seaborn

seaborn.set(style='white')

populations = numpy.sqrt([50000., 10478.2, 4733.4, 3185.3, 2484.7, 2310.9])
cp = seaborn.color_palette('Blues_r', n_colors=len(populations))

fig, ax = plt.subplots()

for n, p in enumerate(populations):
    circle = plt.Circle((1, p), radius=p, facecolor=cp[n])
    ax.add_artist(circle)

ax.set_xlim(-max(populations), max(populations))
ax.set_ylim(0, 2 * max(populations))
ax.set_aspect('equal')

plt.show()

给我这个:

enter image description here