0

我正在尝试使用 hvplot 在同一个图上绘制 2 个时间序列,我在图的右侧创建了一个辅助 y 轴,但我的第二个时间序列仍在使用左侧 y 轴进行绘图。

例如,我的第一个时间序列的值范围从 0 到 100 万,因此主(左)y 轴代表该范围。
我的第二个时间序列的值范围从 0 到 100,并且使用主要 y 轴的范围进行绘制,因此它在图表上基本上是不可见的。
我希望我的第二个时间序列使用我的辅助(右)y 轴进行绘图。

这是我的代码:

import pandas as pd
import panel as pn
from bokeh.models import Range1d, LinearAxis

pn.extension()
pd.options.plotting.backend = 'hvplot'
opts.defaults(opts.Points(size=8, line_color='black'))

def plot_ts(media, target):
    fig_1 = df[target].plot.line(title=target, label=target, color="red")
    fig_2 = df[media].plot.area(title=media).opts(plot=dict(hooks=[twinx]), 
            style=dict(color="purple", alpha=0.5))
return fig_1 * fig_2

def twinx(plot, element):
    # Setting the second y axis range name and range
    start, end = (element.range(1))
    label = element.dimensions()[1].pprint_label
    plot.state.extra_y_ranges = {"foo": Range1d(start=start, end=end)}

    # Adding the second axis to the plot. 
    linaxis = LinearAxis(axis_label=plot.title, y_range_name='foo')
    plot.state.add_layout(linaxis, 'right')
4

0 回答 0