我尝试使用plotly
创建条形图。
输入数据如下:
In [7]: datag.ix[:,0].tolist()[1:6]
Out[7]: [2020.0, 5000.0, 6010.0, 6017.0, 6020.0]
和
In [8]:datag.ix[:,1].tolist()[1:6]
Out[8]:
[0.005178087393490427,
0.0014053668695097226,
0.3174139251746979,
0.006049724003653125,
0.24824287385322272]
,代码是
import plotly
import plotly.offline as offline
import plotly.plotly as py
import plotly.graph_objs as go
trace1 = go.Bar(
x=[str(x) for x in datag.ix[:,0].tolist()[1:6]],#datag.ix[:,0].tolist()[1:6],
y=datag.ix[:,1].tolist()[1:6],
name='travel'
)
data=[trace1]
layout= go.Layout(
barmode= 'stack',
title='Realization: 0, 0',
xaxis=dict(title='Model'),
yaxis=dict(title='Time (minutes)')
)
fig= go.Figure(data=data, layout=layout)
offline.plot(fig, image='png', filename='stacked-bar')
我得到以下输出:
但是,问题是我想将x数据展示为字符串
我试过x=[str(x) for x in datag.ix[:,0].tolist()[1:6]]
。
有人可以帮我弄清楚怎么做?
答案 0 :(得分:2)
Plotly'假设'您的数据类型,即使您提供字符串。为categorical
resp设置type
到xaxis
。 yaxis
中的layout
应该可以解决问题。
import pandas as pd
import plotly.offline as offline
import plotly.plotly as py
import plotly.graph_objs as go
d = {'x': [None,
2020.0,
5000.0,
6010.0,
6017.0,
6020.0],
'y': [None,
0.005178087393490427,
0.0014053668695097226,
0.3174139251746979,
0.006049724003653125,
0.24824287385322272]}
datag = pd.DataFrame(data=d)
trace1 = go.Bar(
x=[str(x) for x in datag.ix[:,0].tolist()[1:6]],
y=datag.ix[:,1].tolist()[1:6],
name='travel')
data = [trace1]
layout = go.Layout(
barmode='stack',
title='Realization: 0, 0',
xaxis=dict(title='Model',
type='category'),
yaxis=dict(title='Time (minutes)'))
fig = go.Figure(data=data, layout=layout)
offline.plot(fig, image='png', filename='stacked-bar')