Ced*_*olo 2 python plot dataframe pandas plotly
假设我们DataFrame生成了以下和相应的图表:
import pandas as pd
import plotly
from plotly.graph_objs import Scatter
df = pd.DataFrame({"value":[10,7,0,3,8]},
index=pd.to_datetime([
"2015-01-01 00:00",
"2015-01-01 10:00",
"2015-01-01 20:00",
"2015-01-02 22:00",
"2015-01-02 23:00"]))
plotly.offline.plot({"data": [Scatter( x=df.index, y=df["value"] )]})
Run Code Online (Sandbox Code Playgroud)
如果我使用以下代码:
import matplotlib.pyplot as plt
plt.step(df.index, df["value"],where="post")
plt.show()
Run Code Online (Sandbox Code Playgroud)
我得到如下的步骤图:
我怎样才能得到与step函数相同的结果,但offline plotly改为使用?
我们可以使用line参数shape选项作为hv使用以下代码:
trace1 = {
"x": df.index,
"y": df["value"],
"line": {"shape": 'hv'},
"mode": 'lines',
"name": 'value',
"type": 'scatter'
};
data = [trace1]
plotly.offline.plot({
"data": data
})
Run Code Online (Sandbox Code Playgroud)
生成下图:
小智 7
由于您的数据是 pandas 数据框,除了离线绘图之外,您可以使用绘图表达:
import plotly.express as plx
plx.line(df,line_shape='hv')
Run Code Online (Sandbox Code Playgroud)
其他 line_shape 选项,或给定点之间的插值方法:
试试它们吧...
hv = plx.line(df,line_shape='hv')
vh = plx.line(df,line_shape='vh')
vhv = plx.line(df,line_shape='vhv')
hvh = plx.line(df,line_shape='hvh')
spline = plx.line(df,line_shape='spline')
line = plx.line(df,line_shape='linear')
Run Code Online (Sandbox Code Playgroud)
选择其中之一应根据数据的性质......