气泡图标题和颜色
Bubble Chart Title and Colors
在下面的气泡图中,我该如何:
随机化每个气泡的颜色
调整标题(可能是上部),使其不会与左上角的图表标签重叠。
这是我的输出:
这是我的代码:
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
).
您可以将 N
随机数数组提供给颜色图以获得 N
随机颜色,然后将其用作 color
参数呼叫 plt.scatter
。 color
可以是与大小和人口列表长度相同的颜色列表,它将分别为每个散点着色。
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()
在下面的气泡图中,我该如何:
随机化每个气泡的颜色
调整标题(可能是上部),使其不会与左上角的图表标签重叠。
这是我的输出:
这是我的代码:
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
).
您可以将
N
随机数数组提供给颜色图以获得N
随机颜色,然后将其用作color
参数呼叫plt.scatter
。color
可以是与大小和人口列表长度相同的颜色列表,它将分别为每个散点着色。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()