猿问

在同一图中绘制多条曲线(x、y1、y2、x、y3、y4)

我正在尝试在“y”轴上绘制具有四个不同值的图形。所以,我有 6 个数组,其中 2 个具有代表“x”轴时间值的元素,另外 4 个代表相对于“y”轴的相应元素(在相同位置)。


例子:


LT_TIME = ['18:14:17.566 ', '18:14:17.570']

LT_RP = [-110,-113]

LT_RQ = [-3,-5]

GNR_TIME = ['18: 15: 42.489', '18:32:39.489']

GNR_RP = [-94, -94]

GNR_RQ = [-3, -7]

“LT”图的坐标为:


('18:14:17.566',-110), ('18:14:17.570',-113), ('18:14:17.566',-3), ('18:14:17.570',-5)

使用这些坐标,我可以生成一个带有两个“y”轴的图形,其中包含点(-110,-113,-3,-5)和一个带有点的“x”轴('18:14:17.566', '18:14:17.570')。


类似地,可以做同样的“GNR”阵列。那么,我怎样才能在同一张图上同时拥有“LT”和“GNR”数组上的所有笛卡尔点呢???我的意思是,如何绘制以便我在同一图表上具有以下坐标:


('18:14:17.566',-110), ('18:14:17.570 ',-113), ('18:14:17.566',-3),  ('18:14:17.570',-5),

('18:15:42.489',-94), ('18:32:39.489',-94), ('18:15:42.489',-3), ('18:32:39.489',-7)

DIEA
浏览 183回答 1
1回答

杨魅力

听起来您的问题有两个部分:以可视化库可以理解的方式格式化数据并使用双轴实际可视化它。您的示例屏幕截图包含一些交互式控件,因此我建议您使用散景,它可以让您“免费”缩放和平移,而不是matplotlib. 此外,我发现bokeh添加双轴的方式更直接。对于第一部分,您可以将您拥有的数据合并到一个数据框中,如下所示:import pandas as pdfrom bokeh.models import LinearAxis, Range1d, ColumnDataSourcefrom bokeh.plotting import figure, output_notebook, showoutput_notebook() #if working in Jupyter Notebook, output_file() if notLT_TIME = ['18:14:17.566 ', '18:14:17.570']LT_RP = [-110,-113]LT_RQ = [-3,-5]GNR_TIME = ['18: 15: 42.489', '18:32:39.489']GNR_RP = [-94, -94]GNR_RQ = [-3, -7]s1 = list(zip(LT_TIME, LT_RP)) + list(zip(GNR_TIME, GNR_RP))s2 = list(zip(LT_TIME, LT_RQ)) + list(zip(GNR_TIME, GNR_RQ))df1 = pd.DataFrame(s1, columns=["Date", "RP"])df2 = pd.DataFrame(s2, columns=["Date", "RQ"])df = df1.merge(df2, on="Date")source = ColumnDataSource(df)要将数据可视化为双轴折线图,我们只需指定额外的 y 轴并将其放置在布局中:p = figure(x_range=df["Date"], y_range=(-90, -120))p.line(x="Date", y="RP", color="cadetblue", line_width=2, source=source)p.extra_y_ranges = {"RQ": Range1d(start=0, end=-10)}p.line(x="Date", y="RQ", color="firebrick", line_width=2, y_range_name="RQ", source=source)p.add_layout(LinearAxis(y_range_name="RQ"), 'right')show(p)
随时随地看视频慕课网APP

相关分类

Python
我要回答