使用Matplotlib后端控制Holoviews + Datashader的大小问题

时间:2018-02-02 21:02:41

标签: python holoviews datashader

我目前正在尝试使用matplotlib后端的holoviews + datashader。我正在使用的数据具有非常不同的x和y范围,结果是数据分析器图无法伸展。我尝试过使用的opts和output关键字可以解决问题只有全息视图而不是一旦应用数据分区。

例如:

import holoviews as hv
hv.extension('matplotlib')
import numpy as np
from holoviews.operation.datashader import datashade

np.random.seed(1)
positions = np.random.multivariate_normal((0,0),[[0.1,0.1], [0.1,50.0]], (1000000,))
positions2 = np.random.multivariate_normal((0,0),[[0.1,0.1], [0.1,50]], (1000,))
points = hv.Points(positions,label="Points")
points2 = hv.Points(positions2,label="Points2")
plot = datashade(points) + points2
plot

生成: datashader and points output

我可以使用fig_size opts关键字

控制点的大小
e.g. points2(plot=dict(fig_size=200))

但同样不适用于数据分析器图。任何有关使用matplotlib更改此类数据分析器数字大小的建议都将非常感激。理想情况下,我想使用函数而不是单元格魔术关键字,因此可以将代码移植到脚本中。

谢谢!

1 个答案:

答案 0 :(得分:0)

在HoloViews中更改matplotlib图的大小始终由外部容器控制,因此当您拥有布局时,可以更改该对象的大小,例如:在你的例子中:

plot = datashade(points) + points2
plot.opts(plot=dict(fig_size=200))

可能令人困惑的另一部分是RGB元素(数据分区操作返回的内容)默认使用aspect ='equal'。您可以通过将方面设置为“方形”或显式宽高比来更改它:

datashade(points).opts(plot=dict(fig_size=200, aspect='square'))

把它放在一起你可能想做这样的事情:

plot = datashade(points).opts(plot=dict(aspect='square')) + points2
plot.opts(plot=dict(fig_size=200))