Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用全息视图可视化时间跨度?_Python_Holoviews_Pyviz - Fatal编程技术网

Python 如何使用全息视图可视化时间跨度?

Python 如何使用全息视图可视化时间跨度?,python,holoviews,pyviz,Python,Holoviews,Pyviz,我最近在python中发现了一个很有前途的可视化库,作为实践,我想转移一些现有代码,看看它在hv中是什么样子。我达到了我无法重现的给定情节 我想可视化一个时间线或路线图,其中x轴是pd.datetime类型,y轴是分类的。大概是这样的: 我应该使用什么元素?如何定义各部分的开始和结束位置?听起来您需要一个甘特图。 我正在使用从时间起点到时间终点绘制一条线: # import libraries from datetime import datetime import holoviews as h

我最近在python中发现了一个很有前途的可视化库,作为实践,我想转移一些现有代码,看看它在hv中是什么样子。我达到了我无法重现的给定情节

我想可视化一个时间线或路线图,其中x轴是pd.datetime类型,y轴是分类的。大概是这样的:


我应该使用什么元素?如何定义各部分的开始和结束位置?

听起来您需要一个甘特图。 我正在使用从时间起点到时间终点绘制一条线:

# import libraries
from datetime import datetime
import holoviews as hv
hv.extension('bokeh')

# drawing a simple line
line1 = hv.Curve([
    [datetime(2018, 1,  3), 'Event1'],
    [datetime(2018, 1, 31), 'Event1'],
])

# creating a dashed line
line2 = hv.Curve([
    [datetime(2018, 3,  3), 'Event2'],
    [datetime(2018, 3, 30), 'Event2'],
]).opts(line_dash='dashed')

# creating a black thicker line
line3 = hv.Curve([
    [datetime(2018, 7, 15), 'Event2'],
    [datetime(2018, 9, 23), 'Event2'],
]).opts(color='black', line_width=10.0)

# add all 3 lines together on 1 plot with the * symbol
# this creates an overlay
gantt_chart = (line1 * line2 * line3)

# change xlim and width of the whole chart and add xlabel
# just making the plot a bit nicer
gantt_chart.opts(
    width=800, 
    xlim=(datetime(2018, 1, 1), datetime(2018, 12, 31)),
    xlabel='start to stop',
    ylabel='',
)
如您所见,我还添加了一些选项作为示例来更改线条样式和x轴范围

示例代码给出了以下图表:

另一种解决方案是一种更通用的生成甘特图的方法,它在数据上循环并为每个开始/停止点生成曲线:

# import libraries
from datetime import datetime
import holoviews as hv
hv.extension('bokeh')

# create sample data
data = [
    [datetime(2018, 1, 3), datetime(2018, 1, 31), 'Event1'],
    [datetime(2018, 3, 3), datetime(2018, 3, 30), 'Event2'],   
    [datetime(2018, 7, 15), datetime(2018, 9, 23), 'Event2'],
]

# loop over data to create a list with a line/curve for every start/stop point
all_lines_list = [
    hv.Curve([
        [row[0], row[2]],
        [row[1], row[2]],
    ]).opts(color='red') for row in data
]

# put all lines in an Overlay plot that can display all lines on 1 plot
gantt_chart = hv.Overlay(all_lines_list)

# make plot nicer
gantt_chart.opts(
    show_legend=False,
    width=800,
    xlim=(datetime(2018, 1, 1), datetime(2018, 12, 31)),
    xlabel='start to stop',
    ylabel='',
)

听起来你需要一个甘特图。 我正在使用从时间起点到时间终点绘制一条线:

# import libraries
from datetime import datetime
import holoviews as hv
hv.extension('bokeh')

# drawing a simple line
line1 = hv.Curve([
    [datetime(2018, 1,  3), 'Event1'],
    [datetime(2018, 1, 31), 'Event1'],
])

# creating a dashed line
line2 = hv.Curve([
    [datetime(2018, 3,  3), 'Event2'],
    [datetime(2018, 3, 30), 'Event2'],
]).opts(line_dash='dashed')

# creating a black thicker line
line3 = hv.Curve([
    [datetime(2018, 7, 15), 'Event2'],
    [datetime(2018, 9, 23), 'Event2'],
]).opts(color='black', line_width=10.0)

# add all 3 lines together on 1 plot with the * symbol
# this creates an overlay
gantt_chart = (line1 * line2 * line3)

# change xlim and width of the whole chart and add xlabel
# just making the plot a bit nicer
gantt_chart.opts(
    width=800, 
    xlim=(datetime(2018, 1, 1), datetime(2018, 12, 31)),
    xlabel='start to stop',
    ylabel='',
)
如您所见,我还添加了一些选项作为示例来更改线条样式和x轴范围

示例代码给出了以下图表:

另一种解决方案是一种更通用的生成甘特图的方法,它在数据上循环并为每个开始/停止点生成曲线:

# import libraries
from datetime import datetime
import holoviews as hv
hv.extension('bokeh')

# create sample data
data = [
    [datetime(2018, 1, 3), datetime(2018, 1, 31), 'Event1'],
    [datetime(2018, 3, 3), datetime(2018, 3, 30), 'Event2'],   
    [datetime(2018, 7, 15), datetime(2018, 9, 23), 'Event2'],
]

# loop over data to create a list with a line/curve for every start/stop point
all_lines_list = [
    hv.Curve([
        [row[0], row[2]],
        [row[1], row[2]],
    ]).opts(color='red') for row in data
]

# put all lines in an Overlay plot that can display all lines on 1 plot
gantt_chart = hv.Overlay(all_lines_list)

# make plot nicer
gantt_chart.opts(
    show_legend=False,
    width=800,
    xlim=(datetime(2018, 1, 1), datetime(2018, 12, 31)),
    xlabel='start to stop',
    ylabel='',
)
HoloViews>=1.13现在有了。 这使得创建甘特图变得更加容易:

从日期时间导入日期时间 将全息视图导入为hv 高压分机“bokeh” 数据={ “开始”:[datetime2018,1,3,datetime2018,3,3,datetime2018,7,15], “结束”:[datetime2018,1,31,datetime2018,3,30,datetime2018,9,23], '开始事件':['Event1','Event2','Event2'], “结束事件”:[“事件1”、“事件2”、“事件2]”, } df=pd.DataFramedata 高压段 数据=df, kdims=[“开始”、“开始事件”、“结束”、“结束事件”] .optsline_宽度=4,宽度=1000 HoloViews>=1.13现在有了。 这使得创建甘特图变得更加容易:

从日期时间导入日期时间 将全息视图导入为hv 高压分机“bokeh” 数据={ “开始”:[datetime2018,1,3,datetime2018,3,3,datetime2018,7,15], “结束”:[datetime2018,1,31,datetime2018,3,30,datetime2018,9,23], '开始事件':['Event1','Event2','Event2'], “结束事件”:[“事件1”、“事件2”、“事件2]”, } df=pd.DataFramedata 高压段 数据=df, kdims=[“开始”、“开始事件”、“结束”、“结束事件”] .optsline_宽度=4,宽度=1000
plotly后端支持它吗?它似乎不支持,似乎只适用于Bokeh后端。您可以通过执行以下操作来测试:hv.extension'plotly'与hv.extension'bokeh'谢谢。我试着使用了来自的cantor函数。情节确实显示了,非共享选项下降了一半,但在我的计算机上,plotly后端30秒对4秒的速度要慢得多,至少在VSCode中是这样,但我是用Dash构建的。有点想留下来。plotly后端支持它吗?它似乎不支持,似乎只适用于Bokeh后端。您可以通过执行以下操作来测试:hv.extension'plotly'与hv.extension'bokeh'谢谢。我试着使用了来自的cantor函数。情节确实显示了,非共享选项下降了一半,但在我的计算机上,plotly后端30秒对4秒的速度要慢得多,至少在VSCode中是这样,但我是用Dash构建的。有点想留下来。