2017-02-17 5 views
2

Я хотел бы представить некоторые данные, хранящиеся в словареВизуализация данных - участки пузыря в питона

foo = {'cat':5, 'dog':1, 'elephant':10} 

как пузырь участка, с размерами пузырьков, соответствующих значениям. В идеале я бы хотел интерактивности; При наведении курсора мыши на пузырь вы видите, например, имя «кошка».

Любые рекомендации и советы по достижению этого?

идея у меня было это создать панд dataframe, df =

Animals  Love x y 
0 cat   5  0 0 
1 dog   1  1 0 
2 elephant 10  0 1 

где х, у параметров используются, чтобы сказать что-то вроде Сиборна местоположения пузырьков и «Love» определяет размер пузырьков. Это кажется несколько неуклюжим, тем более, что у меня много больше трех рядов. Я бы хотел, чтобы местоположение пузырьков было выбрано автоматически.

Конечно, это всего лишь одна идея, поэтому любые предложения очень приветствуются!

ответ

1

Вы можете использовать библиотеку python bokeh для интерактивной визуализации.

http://bokeh.pydata.org/en/latest/docs/gallery/categorical.html

Объединить функциональность зависать в figure и сюжетных кругов/пузырьков вместо прямоугольников, как в приведенном выше руководстве.

1

Я не нашел простой способ сделать это с помощью matplotlib, но если вы не против браузера, вы можете попробовать mpld3. Ниже приведен пример:

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

fig, ax = plt.subplots(subplot_kw=dict(axisbg='#EEEEEE')) 
N = 10 

#  Animals  Love x y 
# 0 cat   5  0 0 
# 1 dog   1  1 0 
# 2 elephant 10  0 1 

x = np.array([0, 1, 0]) 
y = np.array([0, 0, 1]) 
s = np.array([5, 1, 0]) * 1000 # make circle looks bigger 
c = np.array(['red', 'green', 'blue']) 
labels = ['cat', 'dog', 'elephant'] 

scatter = ax.scatter(x, y, c=c, s=s, alpha=0.3) 
ax.grid(color='white', linestyle='solid') 

ax.set_title("Scatter Plot (with tooltips!)", size=20) 

tooltip = mpld3.plugins.PointLabelTooltip(scatter, labels=labels) 
mpld3.plugins.connect(fig, tooltip) 

mpld3.show() 

Результат (метка показана на парении):

example

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