2016-03-10 4 views
1

В следующей пузырьковой диаграмме, как я могу:Bubble Название диаграммы и цвет

  1. Randomize цвета каждый пузырек

  2. Отрегулируйте название (может быть верхним), поэтому он не будет пересекаться с в верхнем левом углу.

Вот мой результат:

Bubble Chart

Вот мой код:

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 

ответ

4
  1. Вы можете кормить массив N случайных чисел в палитру, чтобы получить N случайных цветов, а затем использовать его в качестве color аргумента при вызове plt.scatter. color может быть списком цветов той же длины, что и размеры и списки населения, которые будут окрашивать каждую точку разброса отдельно.

  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() 

enter image description here

0

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) Для перекрытия названия вы можете удалить перекрытие, изменив размер окна. Вы можете установить размер окна (checkset_size_inches).

Смежные вопросы