Python 如何在同一交互式图形上绘制两条直线?

Python 如何在同一交互式图形上绘制两条直线?,python,matplotlib,bokeh,panel,holoviews,Python,Matplotlib,Bokeh,Panel,Holoviews,可以在同一张图上画两条线吗?我正在使用Jupyter上的面板。然而,我只能在两个不同的图形上绘制两条线。我希望在更改输入值时,将所有内容都放在同一个图表上,以比较结果 我不在乎是否必须使用Panel、Bokeh、Holoview等 致以最良好的祝愿, VQ 作为pn导入面板 请注意:扩展部分() 将panel.widgets作为pnw导入 作为pd进口熊猫 将numpy作为np导入 将matplotlib.pyplot作为plt导入 def mplplot(df,**kwargs): 图=df

可以在同一张图上画两条线吗?我正在使用Jupyter上的面板。然而,我只能在两个不同的图形上绘制两条线。我希望在更改输入值时,将所有内容都放在同一个图表上,以比较结果

我不在乎是否必须使用Panel、Bokeh、Holoview等

致以最良好的祝愿, VQ


作为pn导入面板
请注意:扩展部分()
将panel.widgets作为pnw导入
作为pd进口熊猫
将numpy作为np导入
将matplotlib.pyplot作为plt导入
def mplplot(df,**kwargs):
图=df.图(title='title-将温度从摄氏度转换为开尔文')
图图例([“温度]);
图set_xlabel(“Celcius”)
图1设定值(“开尔文”)
图=图get_图()
plt.关闭(图)
返回图
def摄氏度至开氏度(C=100,视图=mplplot):
C=np.arange(0,C,1)
K=(C+273.15)
df=pd.DataFrame(dict(y=K),index=C)
返回视图(df,K=K,C=C)
def摄氏度至摄氏度(C=100,视图=mplplot):
C=np.arange(0,C,1)
K=(C+273.15)
df=pd.DataFrame(dict(y=K),index=C)
返回视图(df,K=K,C=C)
C=pnw.FloatSlider(name='C',value=50,start=0,end=100)
C1=pnw.FloatSlider(name='C1',value=40,start=0,end=100)
@pn.取决于(C.参数值)
def摄氏度至开氏度变量(C):
返回摄氏度至开尔文(C)
@pn.取决于(C1.参数值)
def摄氏度至开氏度变量1(C1):
返回摄氏度至摄氏度1(C1)
widgets=pn.Column(“
\n#####变量配置”,C,C1) Celsiu至Kelvin面板=pn.行(Celsiu至Kelvin变量、Celsiu至Kelvin变量1、小部件) 摄氏度至开氏度面板

几乎可以使用任何绘图库在同一图形上绘制两条线。要执行此操作,请按照正在使用的任何绘图库的说明进行操作;该面板将能够绘制出任何您提出的内容(但在其他方面不涉及此类叠加)。在这里,您的代码使用Pandas.plot(),据我所知,它只对同一数据帧中的数据进行覆盖打印,但您可以使用本机Matplotlib API直接创建打印。请参阅例如或Matplotlib文档



import panel as pn
pn.extension()
import panel.widgets as pnw
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

def mplplot(df, **kwargs):
    fig = df.plot(title='Title - Convert temperature from degree Celsius to Kelvin') 


    fig.legend(["Temperature"]);
    fig.set_xlabel("Celcius")
    fig.set_ylabel("Kelvin")
    fig= fig.get_figure()
    plt.close(fig)
    return fig


def Celsius_to_Kelvin(C=100, view_fn=mplplot):
    C = np.arange(0,C, 1)    
    K = (C + 273.15)
    df = pd.DataFrame(dict(y=K), index=C)

    return view_fn(df, K=K, C=C)

def Celsius_to_Kelvin1(C=100, view_fn=mplplot):
    C = np.arange(0,C, 1)    
    K = (C + 273.15)
    df = pd.DataFrame(dict(y=K), index=C)

    return view_fn(df, K=K, C=C)


C  = pnw.FloatSlider(name='C', value=50, start=0, end=100) 
C1  = pnw.FloatSlider(name='C1', value=40, start=0, end=100)

@pn.depends(C.param.value)
def Celsius_to_Kelvin_variables(C):
    return Celsius_to_Kelvin(C)

@pn.depends(C1.param.value)
def Celsius_to_Kelvin_variables1(C1):
    return Celsius_to_Kelvin1(C1)

widgets    = pn.Column("<br>\n#### Variable configuration", C, C1)
Celsius_to_Kelvin_panel = pn.Row(Celsius_to_Kelvin_variables, Celsius_to_Kelvin_variables1, widgets)

Celsius_to_Kelvin_panel