演示不用愁,推荐一个最好用效果惊艳的Python互动可视化组件

人民日报 2019-10-12

如何能给用户最真切的数字感觉呢?看看下面的交互式数据可视化图:

演示不用愁,推荐一个最好用效果惊艳的Python互动可视化组件

Pandas Bokeh直线图

演示不用愁,推荐一个最好用效果惊艳的Python互动可视化组件

Pandas Bokeh仪表板

被惊呆了吧?隆重推出本期的python交互式可视化工具---Pandas Bokeh。

演示不用愁,推荐一个最好用效果惊艳的Python互动可视化组件

Pandas Bokeh

Pandas Bokeh为Pandas和GeoPandas提供了一个Bokeh绘图后端,完全是为Pandas 量身定制的Visualization功能。下面快速入门安装和使用,都是非常的简单。

安装

您可以通过pip从PyPI安装Pandas Bokeh:

pip install pandas-bokeh

Pandas Bokeh在Python 2.7以及Python 3.4及更高版本上得到官方支持。

快速入门

使用Pandas Bokeh,创建令人惊叹的,交互式的,基于HTML的可视化就像调用一样简单:

df .plot_bokeh ()

在0.2版中,支持以下以下丰富的绘图类型:

  • 线
  • 点图
  • bar
  • 直方图
  • 饼图
  • mapplot

文件输出

可视化结果直接存到“Interactive Plot.html”(另请参见bokeh.io.output_file)

import pandas as pd
import pandas_bokeh
pandas_bokeh.output_file(“ Interactive Plot.html ”)

直线图(Lineplot)

这个简单的lineplot在pandas_bokeh 包含了各种互动元素:

  • a pannable and zoomable(放大plotarea和zoom on axis)图
  • 通过单击图例元素,可以隐藏和显示各个线条
  • 用于绘制线条的H??overtool

以下为简单示例:

import numpy as np
np.random.seed(42)
df = pd.DataFrame({ “ Google ”:np.random.randn(1000)+ 0.2,
“ Apple ”:np.random.randn(1000)+ 0.17 },
index = pd.date_range(' 1/1/2000 ',句点= 1000))
df = df.cumsum()
df = df + 50
df.plot_bokeh(kind = “ line ”) #等效于df.plot_bokeh.line()lai

来看看这一小段代码的可视化效果吧:

演示不用愁,推荐一个最好用效果惊艳的Python互动可视化组件

直线图(Lineplot)

可以拖动交互的google和apple股价直线图就生成了。

仪表板布局

最后来个几个可视化融于一体的仪表板,生成仪表板的最简单方法是使用pandas_bokeh.plot_grid方法(这是bokeh.layouts.gridplot的扩展):

import pandas as pd
import numpy as np
import pandas_bokeh
pandas_bokeh.output_notebook()
#Barplot:
data = {
'fruits':
['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries'],
'2015': [2, 1, 4, 3, 2, 4],
'2016': [5, 3, 3, 2, 4, 6],
'2017': [3, 2, 4, 4, 5, 3]
}
df = pd.DataFrame(data).set_index("fruits")
p_bar = df.plot_bokeh(
kind="bar",
ylabel="Price per Unit [€]",
title="Fruit prices per Year",
show_figure=False)
#Lineplot:
np.random.seed(42)
df = pd.DataFrame({
"Google": np.random.randn(1000) + 0.2,
"Apple": np.random.randn(1000) + 0.17
},
index=pd.date_range('1/1/2000', periods=1000))
df = df.cumsum()
df = df + 50
p_line = df.plot_bokeh(
kind="line",
title="Apple vs Google",
xlabel="Date",
ylabel="Stock price [$]",
yticks=[0, 100, 200, 300, 400],
ylim=(0, 400),
colormap=["red", "blue"],
show_figure=False)
#Scatterplot:
from sklearn.datasets import load_iris
iris = load_iris()
df = pd.DataFrame(iris["data"])
df.columns = iris["feature_names"]
df["species"] = iris["target"]
df["species"] = df["species"].map(dict(zip(range(3), iris["target_names"])))
p_scatter = df.plot_bokeh(
kind="scatter",
x="petal length (cm)",
y="sepal width (cm)",
category="species",
title="Iris DataSet Visus
alization",
show_figure=False)
#Histogram:
df_hist = pd.DataFrame({
'a': np.random.randn(1000) + 1,
'b': np.random.randn(1000),
'c': np.random.randn(1000) - 1
},
columns=['a', 'b', 'c'])
p_hist = df_hist.plot_bokeh(
kind="hist",
bins=np.arange(-6, 6.5, 0.5),
vertical_xlabel=True,
normed=100,
hovertool=False,
title="Normal distributions",
show_figure=False)
#Make Dashboard with Grid Layout:
pandas_bokeh.plot_grid([[p_line, p_bar],
[p_scatter, p_hist]], plot_width=450)
演示不用愁,推荐一个最好用效果惊艳的Python互动可视化组件

仪表板布局

该项目的github地址是:https://github.com/PatrikHlobil/Pandas-Bokeh

更多精彩的可以访问这里获取更多。