我用Bokeh和matplotlib分别绘制了一个方框图。同样的数据,在博克的绘图速度要慢100倍左右。为什么要花这么长时间? 下面是代码,我在Jupyter笔记本上运行了这个:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from bokeh.charts import BoxPlot, output_notebook, show
from time import time
%matplotlib inline
# Generate data
N = 100000
x1 = 2 + np.random.randn(N)
y1 = ['a'] * N
x2 = -2 + np.random.randn(N)
y2 = ['b'] * N
X = list(x1) + list(x2)
Y = y1 + y2
data = pd.DataFrame()
data['Vals'] = X
data['Class'] = Y
df = data.apply(np.random.permutation)
# Time the bokeh plot
start_time = time()
p = BoxPlot(data, values='Vals', label='Class',\
title="MPG Summary (grouped by CYL, ORIGIN)")
output_notebook()
show(p)
end_time = time()
print("Total time taken for Bokeh is {0}".format(end_time - start_time))
# time the matplotlib plot
start_time = time()
data.boxplot(column='Vals', by='Class', sym = 'o')
end_time = time()
print("Total time taken for matplotlib is {0}".format(end_time - start_time))
print语句产生以下输出:
Total time taken for Bokeh is 11.8056321144104
Total time taken for matplotlib is 0.1586170196533203
bokeh.charts.BoxPlot
有一些问题。不幸的是,bokeh.charts
目前没有维护器,因此我无法说明何时可以修复或改进它。在但是,如果对您有用,我将在下面演示,您可以使用成熟且稳定的
bokeh.plotting
API“手工”完成任务,那么时间可以与MPL相比,如果不比MPL快的话:这是一段代码,但它足够简单,可以打包成一个可重用的函数。对我来说,以上结果是:
相关问题 更多 >
编程相关推荐