使用Holoviews为长图添加长名称和单位的优雅方式

时间:2017-01-18 18:42:32

标签: python plot jupyter holoviews

我已经开始在Python3和Jupyter笔记本中使用Holoviews,我正在寻找一种在我的绘图轴上放置长名称和单位的好方法。一个例子如下:

import holoviews as hv
import pandas as pd
from IPython.display import display
hv.notebook_extension()

dataframe = pd.DataFrame({"time": [0, 1, 2, 3],
                          "photons": [10, 30, 20, 15],
                          "norm_photons": [0.33, 1, 0.67, 0.5],
                          "rate": [1, 3, 2, 1.5]}, index=[0, 1, 2, 3])
hvdata = hv.Table(dataframe, kdims=["time"])
display(hvdata.to.curve(vdims='rate'))

这给了我一个很好的情节,但是不是x轴上的'time'和y轴上的'rate',我更喜欢'Time(ns)'和'Rate(1 / s)之类的东西',但我不想每次都在代码中输入。 我发现this blog post by PhilippJFR我需要哪种功能,但他使用的DFrame()函数是折旧的,所以如果可能的话我想避免使用它。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

很容易做到但在文档中很难找到。您只需传递holoviews.Dimension而不是字符串作为kdims参数:

hvdata = hv.Table(dataframe, kdims=[hv.Dimension(name='Time', unit='ns')])
display(hvdata.to.curve(vdims=hv.Dimension(name='Rate', unit='1/s')))

答案 1 :(得分:0)

您可以在以下SO问题中找到不错的选择:
Setting x and y labels with holoviews

我喜欢这样:
用变量名和长名称创建一个元组,您希望在打印图上看到它的名字:

hvdata = hv.Table(
    dataframe,
    kdims=[('time', 'Time (ns)')],
    vdims=[('rate', 'Rate (1/s)')],
)