Как построить две линии на одном интерактивном графике? - PullRequest
1 голос
/ 26 мая 2020

можно ли построить две линии на одном графике? Я использую Panel на Jupyter. Однако я могу построить только две линии на двух разных графиках. Я хотел бы, чтобы все было на одном графике, чтобы сравнивать результаты при изменении входных значений.

Мне все равно, нужно ли мне использовать Panel, Bokeh, Holoview и т. Д. c.

С уважением, VQ



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   

enter image description here

1 Ответ

0 голосов
/ 26 мая 2020

Вы можете построить две линии на одном графике, используя практически любую графическую библиотеку. Чтобы сделать это, вы следуете инструкциям для любой библиотеки черчения, которую вы используете; Panel сможет строить все, что вы придумаете (но в остальном не участвует в таких наложениях). Здесь ваш код использует Pandas .plot (), который, насколько мне известно, создает только наложенные графики для данных в том же фрейме данных, но вы можете использовать собственный API Matplotlib для непосредственного создания графика. См., Например, https://python-graph-gallery.com/122-multiple-lines-chart/ или документацию Matplotlib.

...