这里似乎有两个问题:
- 日期格式
- 图表中的线性间距 -(未解决)
日期格式:
此答案使用您的日期列表解决了日期格式问题。我们将使用pandas.DataFrame 来处理数据的格式化并将数据传递到plotly,因为它们可以很好地协同工作。
这是带有 cmets 的示例代码。 我已经模拟了这些值,但日期是你的。
线性间距:
不幸的是,我无法找到一种方法来设置日期轴,并且日期之间具有代表性(不相等)间距。还有谁?但是下面的代码解决方案使您可以使用 xaxis 上的 'type': 'category' 参数将日期用作 xaxis。
我没有对输出图表应用任何漂亮的格式 - 这取决于你。 :-)
import pandas as pd
import numpy as np
import plotly.graph_objs as go
from plotly.offline import plot
# Builing date range from yours.
dates = [201909240908, 201909240956, 201909241002, 201909241056, 201909241113, 201909241156,
201909241200, 201909241227, 201909241256, 201909241301, 201909241356, 201909241456,
201909241547, 201909241556, 201909241648, 201909241656, 201909241704, 201909241756,
201909241936, 201909241956, 201909242008, 201909242056, 201909242151, 201909242156,
201909242218, 201909242256, 201909242315, 201909242356, 201909250041, 201909250056,
201909250057, 201909250156, 201909250200, 201909250256, 201909250356, 201909250400,
201909250456, 201909250556, 201909250656, 201909250756, 201909250856, 201909250956,
201909251056, 201909251156, 201909251256, 201909251356]
# Simulate values.
values = np.random.randint(250, 350, len(dates)).tolist()
# Add dates and values to a DataFrame.
df = pd.DataFrame({'Dates': dates, 'Values': values})
# Format your dates.
df['Dates'] = pd.to_datetime(dates, format='%Y%m%d%H%M').strftime('%Y-%d-%m %H:%M')
# Create plot.
trace = go.Scatter(x=df['Dates'], y=df['Values'])
layout = {}
layout.update({'xaxis': {'type': 'category'}})
layout.update({'yaxis': {'range': [0, 400]}})
fig = {'data': [trace], 'layout': layout}
plot(fig)
替代日期格式:
将日期转换为 datetime 对象列表(并省略 DataFrame)的另一种方法是:
datesf = [pd.datetime.strptime(str(date), "%Y%m%d%H%M") for date in dates]
这将返回:
[datetime.datetime(2019, 9, 24, 9, 8), datetime.datetime(2019, 9, 24, 9, 56), ... ]