使用 holoviews/hvplot 创建绘图网格并设置最大列数
Create a grid of plots with holoviews/hvplot and set the max number of columns
我想使用 holoviews/hvplot 基于一个维度将多个数据绘制到一个网格中,其中包含几个唯一的数据点。
考虑这个例子:
import seaborn as sns
import hvplot.pandas
iris = sns.load_dataset('iris')
plot = iris.hvplot.scatter(x="sepal_length", y="sepal_width", col="species")
hvplot.show(plot)
上面的代码根据鸢尾花数据集的物种部分创建了几个图,结果如下图所示:
但现在想象一下,不是 3 个不同的物种,而是 20 个。情节会变得很宽,所以我想在几个情节之后打破界限。但是我找不到任何 "maximum columns" 参数。普通网格需要另一列来定义我没有的行。
任何建议都会有所帮助。
上述调用返回的 HoloViews object 是一个 GridSpace,它使用列 headers 来指示沿外部行和列维度的值。如果你要在这样的情节中打破这条线,headers 列就会混淆,所以我很确定这永远不会直接起作用。
即使如此,您也可以拉出 GridSpace 中的各个项目并将它们放入 HoloViews 布局(允许换行),只要您重新标记每个地块,以便您知道沿物种维度的值:
import seaborn as sns, hvplot.pandas, holoviews as hv
iris = sns.load_dataset('iris')
plot = iris.hvplot.scatter(x="sepal_length", y="sepal_width", col="species")
p2 = hv.Layout([i.relabel(n).opts() for n,i in plot.items()]).cols(2)
hvplot.show(p2)
对于你的情况,我不会创建 Gridspace (by using keyword 'row' and 'col') but a Layout。
当您有布局时,您可以使用 .cols(2).
轻松调整列数
使用 hvplot 您必须 使用关键字 'by' 和 'subplots=True' 而不是 'col'.
请看下面的代码:
iris.hvplot.scatter(
x='sepal_length',
y='sepal_width',
by='species',
subplots=True,
).cols(2)
结果图:
我想使用 holoviews/hvplot 基于一个维度将多个数据绘制到一个网格中,其中包含几个唯一的数据点。
考虑这个例子:
import seaborn as sns
import hvplot.pandas
iris = sns.load_dataset('iris')
plot = iris.hvplot.scatter(x="sepal_length", y="sepal_width", col="species")
hvplot.show(plot)
上面的代码根据鸢尾花数据集的物种部分创建了几个图,结果如下图所示:
但现在想象一下,不是 3 个不同的物种,而是 20 个。情节会变得很宽,所以我想在几个情节之后打破界限。但是我找不到任何 "maximum columns" 参数。普通网格需要另一列来定义我没有的行。
任何建议都会有所帮助。
上述调用返回的 HoloViews object 是一个 GridSpace,它使用列 headers 来指示沿外部行和列维度的值。如果你要在这样的情节中打破这条线,headers 列就会混淆,所以我很确定这永远不会直接起作用。
即使如此,您也可以拉出 GridSpace 中的各个项目并将它们放入 HoloViews 布局(允许换行),只要您重新标记每个地块,以便您知道沿物种维度的值:
import seaborn as sns, hvplot.pandas, holoviews as hv
iris = sns.load_dataset('iris')
plot = iris.hvplot.scatter(x="sepal_length", y="sepal_width", col="species")
p2 = hv.Layout([i.relabel(n).opts() for n,i in plot.items()]).cols(2)
hvplot.show(p2)
对于你的情况,我不会创建 Gridspace (by using keyword 'row' and 'col') but a Layout。
当您有布局时,您可以使用 .cols(2).
使用 hvplot 您必须 使用关键字 'by' 和 'subplots=True' 而不是 'col'.
请看下面的代码:
iris.hvplot.scatter(
x='sepal_length',
y='sepal_width',
by='species',
subplots=True,
).cols(2)
结果图: