使用Holoviews设置x和y标签

9
我希望能够更改holoviews图形上x和y轴的标签,使其不再是内部变量名称。似乎影响轴标签的典型方法是将变量名称本身更改为标签。如果您需要复杂的标签,特别是如果您经常从其他复杂的数据对象(如pandas数据框)进行转换,则这种方法非常不方便。
是否有一般的方法来:(A)在绘制后更改图形的x和y标签或(B)设置人类可读的变量名称别名?
3个回答

8
您可以像下面这个例子一样,在绘制图形后更改轴标签。
hv.Image(np.random.rand(10,10), kdims=['x','y']).redim.label(x='neXt', y='Ys')

编辑: 在早期的HoloViews版本中,您可以轻松地像这样更改轴标签,请参见Holoviews常见问题解答中的第二个答案。

curve = hv.Curve(df, 'x_col', 'y_col')
curve = curve.options(xlabel='X Label', ylabel='Label for Y')

4

HoloViews确实有维度别名,虽然我们应该更好地记录它们。定义它们有两种方式。您可以将形式为(name, label)的元组作为维度提供,也可以明确声明一个Aliases对象并提供属性。这是一个简单的例子:

aliases = hv.util.Aliases(x='Some long label')
hv.Image(np.random.rand(10,10), kdims=[aliases.x, ('y', 'Inline label')])

绘图代码将使用长标签,您可以在使用对象的方法时引用名称或标签。如果您还想定义范围或其他Dimension参数,您也可以直接向维度提供元组:hv.Dimension(('name', 'label'), range=(0,10))


有没有办法像广播别名一样将其传递给多个对象,比如Holomap或Layout中的所有项?这样在构建复杂图形时可以节省很多打字时间。 - Caleb
我暂时取消了已回答的标志,因为当我将 pandas 数据框转换为 holoview 类型时,这似乎不起作用。 - Caleb
你说得对,这似乎对数据框架的效果并不好。我已经打开了一个相应的问题,希望能很快解决:https://github.com/ioam/holoviews/issues/1001 - philippjfr
谢谢。是的,你在你开的问题中很好地描述了我遇到的问题。有一些粗糙的边缘,但Holoviews似乎非常不错。我期待着看它如何发展。 - Caleb
我会重新选择这个作为正确答案,因为这是规范的做法,而且最终也应该能够正确地在数据框中工作。 - Caleb

0

您可以通过提供列名和更长的标签的元组来更改x和y标签,以显示您想要的内容:

import numpy as np
import pandas as pd
import holoviews as hv
hv.extension()

data = np.random.normal(size=[50, 2])
df = pd.DataFrame(data, columns=['col1', 'col2'])

hv.Points(
    df, 
    kdims=[('col1', 'long label of col1'), ('col2', 'long label of col2')]
)

其他选择在这个问题中:
使用Holoviews添加长名称和单位到绘图的优雅方式

这将导致以下绘图:
具有自定义x轴和y轴标签的Holoviews绘图


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接