亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在同一圖中繪制多條曲線(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)

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

查看完整回答
反對 回復 2023-05-23
  • 1 回答
  • 0 關注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號