7

我正在使用 Holoviews 构建图表仪表板。其中一些图表在 y 轴上有百分比,而其他图表有总和/计数等。当我尝试将我创建的所有图表输出到 html 文件时,所有图表都会更改它们的 y 轴以匹配第一个图表的轴我的图表列表。

例如:

  • 图 1 是一个总和,值从 0 到 1000
  • 图 2 为 %
  • 图 3 为 %

当我使用以下方法将这些图表组合在全息视图中时:

  • 图表 = 图表 1 + 图表 2 + 图表 3

图 2 和图 3 的 y 轴与图 1 相同。

有谁知道为什么会发生这种情况以及我该如何解决它,以便所有图表都保持它们各自的轴与它们试图表示的内容相关。

谢谢!

4

3 回答 3

6

当 y 轴具有相同名称时会发生这种情况。如果您希望每个绘图都有自己独立的 x 轴和 y 轴,则
需要使用选项 axiswise=True 。

在 holoviews 常见问题解答中有一个对轴方向的简短引用:
https

://www.holoviews.org/FAQ.html 这是我检查并工作的代码示例:

# import libraries etc.
import numpy as np
import pandas as pd
import holoviews as hv
from holoviews import opts
hv.extension('bokeh')

# create some sample data
df1 = pd.DataFrame({
    'x': np.random.rand(10), 
    'y': np.random.rand(10),
})

df2 = pd.DataFrame({
    'x': np.random.rand(10) * 10, 
    'y': np.random.rand(10) * 10,
})

# set axiswise=True so that every plot gets its own independent x- and y-axis    
plot1 = hv.Scatter(df1).opts(axiswise=True)
plot2 = hv.Scatter(df2).opts(axiswise=True)

plot1 + plot2

或者,您可以这样做:

plot1 = hv.Scatter(df1)
plot2 = hv.Scatter(df2)

(plot1 + plot2).opts(opts.Scatter(axiswise=True))


如果在您尝试我的代码示例时这不起作用,您可能必须升级到最新版本的 holoviews。这可以按如下方式完成:
安装最新的 git 版本的 holoviews、hvplot、panel、datashader 和 param

于 2020-01-09T10:45:22.600 回答
3

Sander 的回答是正确的,将解决您的具体问题,但在这种情况下,它可能无法解决根本原因。HoloViews 仅链接相同的轴,听起来您在每个图中的 y 轴上绘制不同的数量。在这种情况下,真正的解决方法是为每个绘图的 y 轴输入一个真实名称,以将其与您可能希望在您正在显示的其他绘图中绘制在 y 轴上的其他事物区分开来。那么不仅 HoloViews 不再不恰当地链接轴,您的绘图查看器将能够分辨出每个绘图都显示了不同的内容。

于 2020-01-10T00:36:18.640 回答
2

I have tried setting xlim and ylim, setting axiswise=True and many other things with no success.

The thing that ultimately solved the issue was to set your_layout.opts(shared_axes=False).

Read more here.

于 2021-05-10T19:48:42.913 回答