气泡图标题和颜色

Bubble Chart Title and Colors

在下面的气泡图中,我该如何:

  1. 随机化每个气泡的颜色

  2. 调整标题(可能是上部),使其不会与左上角的图表标签重叠。

这是我的输出:

这是我的代码:

import matplotlib.pyplot as plt
N=5
province=['Ontario','Quebec','BritishColumbia','Manitoba','NovaScoti']
size = [908.607,1356.547,922.509,552.329,651.036]
population = [12851821,7903001,4400057,1208268,4160000]
injuries = [625,752,629,1255,630]
plt.scatter(size,population,s=injuries)
for i in range(N):
    plt.annotate(province[i],xy=(size[i],population[i]))
plt.xlabel('Size(*1000km2)')
plt.ylabel('Population(ten million)')
plt.title('The Car Accidents Injuries Rate in 5 Canada Provinces')
plt.show

1) 对于颜色,我发现 this answer 有 3 个解决方案 其中之一是:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

x = np.arange(10)
ys = [i+x+(i*x)**2 for i in range(10)]

colors = cm.rainbow(np.linspace(0, 1, len(ys)))
for y, c in zip(ys, colors):
    plt.scatter(x, y, color=c)

2) 对于标题重叠,可以通过调整window的大小来消除重叠。您可以设置 window 大小 (check set_size_inches).

  1. 您可以将 N 随机数数组提供给颜色图以获得 N 随机颜色,然后将其用作 color 参数呼叫 plt.scattercolor 可以是与大小和人口列表长度相同的颜色列表,它将分别为每个散点着色。

  2. plt.title 采用参数 y 来调整标题的垂直位置。在您的情况下,尝试将其设置为 1.05。

这是您的脚本,已修改:

import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np

N=5
province=['Ontario','Quebec','BritishColumbia','Manitoba','NovaScoti']
size = [908.607,1356.547,922.509,552.329,651.036]
population = [12851821,7903001,4400057,1208268,4160000]
injuries = [625,752,629,1255,630]

# Choose some random colors
colors=cm.rainbow(np.random.rand(N))

# Use those colors as the color argument
plt.scatter(size,population,s=injuries,color=colors)
for i in range(N):
    plt.annotate(province[i],xy=(size[i],population[i]))
plt.xlabel('Size(*1000km2)')
plt.ylabel('Population(ten million)')

# Move title up with the "y" option
plt.title('The Car Accidents Injuries Rate in 5 Canada Provinces',y=1.05)
plt.show()