【发布时间】:2021-11-17 20:04:51
【问题描述】:
我需要处理数百个数据文件,我想将结果绘制在一个图表中。我正在使用带有 for 循环的 glob 来读取和存储数据,但我不知道如何用 plotly 绘制它们。
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
import plotly.io as pio
import glob
pio.renderers.default = 'browser'
files = glob.glob('GIRS12_L_8V_0.95bar.*')
traces = []
for file in files:
dat = pd.read_csv(file, sep=' ')
dat.columns = ['time','v(t)']
fig = go.Figure()
traces.append(go.Scatter(x = dat['time'], y = dat['v(t)']))
px.scatter(data_frame = traces)
调用px.scatter(...)对吗?我最后使用了 fig.show() 但我不知道为什么它没有在图表中显示任何内容。
【问题讨论】:
-
您的所有 CSV 文件都有两列吗? (time 和 v(t)) 您是否希望每个文件分散为单独的颜色并在图例中有条目? (您注意到 100 多个文件,颜色将被重复使用,图例将变得太长而无法理解)。 Plotly Express 是比 图形对象 更高级别的 API,通常使用其中一种或另一种,如果 API 提供满足可视化要求所需的所有功能,则为 px
-
您希望每个文件中的数据在这个散点图上显示为单独的轨迹吗?或者您想使用来自所有这些文件的组合数据将
v(t)与time绘制为一条轨迹? -
@DerekO :是的,我把它称为散点图是错误的,我想绘制 v(t) 对时间的曲线图。
-
@RobRaymond:是的,所有文件都有两列,此时我不介意图例,因为我只想检查数据是否可靠。
-
@Michele - 所以我在下面提供的解决方案有效。如果你想要线条而不是散点图,只需更改为
px.line
标签: pandas plot graph plotly glob