为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

DIEA 2023-05-23 14:45:08
我正在尝试在“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)
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

听起来您的问题有两个部分:以可视化库可以理解的方式格式化数据并使用双轴实际可视化它。

您的示例屏幕截图包含一些交互式控件,因此我建议您使用散景,它可以让您“免费”缩放和平移,而不是matplotlib. 此外,我发现bokeh添加双轴的方式更直接。

对于第一部分,您可以将您拥有的数据合并到一个数据框中,如下所示:

import pandas as pd

from bokeh.models import LinearAxis, Range1d, ColumnDataSource

from bokeh.plotting import figure, output_notebook, show


output_notebook() #if working in Jupyter Notebook, output_file() if not


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]


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)

//img2.sycdn.imooc.com/646c613900010ead06560327.jpg

查看完整回答
反对 回复 2023-05-23
  • 1 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信