我正在尝试使用Bokeh(代码中的data_frame)绘制以下数据框,在我的示例中,我只有两列0和1(而Dates是x轴)。但是在我的真实数据集中,我有10个以上,因此我试图找到一个比我的版本更好的版本,而该版本不能很好地推广。 (我想到了for循环,但它似乎不是最佳的)
from bokeh.plotting import figure, show
from bokeh.charts import TimeSeries
from bokeh.io import output_notebook
output_notebook()
data_frame = pd.DataFrame({0: [0.17, 0.189, 0.185, 0.1657], 1: [0.05, 0.0635, 0.0741, 0.0925], 'Date': [2004, 2005, 2006, 2007]})
p = figure(x_axis_label = 'date',
y_axis_label='Topics Distribution')
p.circle(data_frame.Date, data_frame.iloc[:, 0])
p.circle(data_frame.Date, data_frame.iloc[:, 1])
show(p)
我也尝试过此方法,但是它不起作用,并且我不希望行仅指向:
p = TimeSeries(data_frame, index='Date', legend=True,
title = 'T', ylabel='topics distribution')
谢谢你的帮助!
最佳答案
让我们尝试一种不同的方法,看看这是否更有意义:
将数据重塑为
"tidy"数据格式
将Bokeh高级散点图与color参数一起使用
码:
chartdata = data_frame.set_index('Date').stack().reset_index().rename(columns={'level_1':'Category',0:'Value'})
print(chartdata)
输出“整洁”的数据格式:
Date Category Value
0 2004 0 0.1700
1 2004 1 0.0500
2 2005 0 0.1890
3 2005 1 0.0635
4 2006 0 0.1850
5 2006 1 0.0741
6 2007 0 0.1657
7 2007 1 0.0925
建立图表:
from bokeh.charts import Scatter
p = Scatter(chartdata, x='Date', y='Value', color='Category',xlabel='date', ylabel='Topics Distribution')
关于python - 散景图时间序列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43475198/