I would like to save images within plotly fig.write_image
using a forloop, where each image name includes a customized id
and Timestamp
value with a string format, shown below:
fig.write_image(f"{row.id},{row.Timestamp}.png")
**The id
is 01-1
and the Timestamp
is 2011-10-06 08:29:40
in Timestamp
format **
The complete code looks like this:
def draw(summary_df, data_df):
for i, row in summary_df.iterrows():
sub_df = data_df[(data_df.id== row.id) & (data_df.Timestamp >= row.start_time- datetime.timedelta(minutes=1)) & (data_df.Timestamp <= row.end_time +datetime.timedelta(minutes=1))]
fig = go.Figure()
fig.add_trace(go.Scatter(x=sub_df.Timestamp, y=sub_df.Data,
mode='lines+markers+text',
text = sub_df.Data,
textposition="top center",
textfont=dict(
family="arial",
size=10,
color="#6570f9") ))
fig.add_shape(type='line',
x0=sub_df.Timestamp.iloc[0],
y0=48,
x1=sub_df.Timestamp.iloc[-1],
y1=48,
line=dict(color='Red',
# dash="dashdot",
),
xref='x',
yref='y'
)
fig.update_layout(
title=f'{i}. {row.id}, {row.Timestamp}',
xaxis_title="Timestamp",
yaxis_title="Measurement",
legend_title="Data",
font=dict(
size=11
)
)
fig.write_image(f"{row.id},{row.Timestamp}.png")
fig.show()
However, it caught an error:
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
<ipython-input-30-eb8687cd8f7a> in <module>
<ipython-input-28-750952f89e28> in draw(summary_df, data_df)
---> 83 fig.write_image(f"{row.id}{row.Timestamp}.png")
84 fig.show()
85
c:\Python38\lib\site-packages\plotly\basedatatypes.py in write_image(self, *args, **kwargs)
3556 import plotly.io as pio
3557
-> 3558 return pio.write_image(self, *args, **kwargs)
3559
3560 # Static helpers
c:\Python38\lib\site-packages\plotly\io\_kaleido.py in write_image(fig, file, format, scale, width, height, validate, engine)
256 # ---------
257 if file_is_str:
--> 258 with open(file, "wb") as f:
259 f.write(img_data)
260 else:
OSError: [Errno 22] Invalid argument: '01-12011-10-06 08:29:40.png'
I also tried to convert Timestamp
into string
but no luck. Does the issue lie with the timestamp string format?