我正在尝试使用Bokeh(代码中的data_frame)绘制以下数据帧,在我的示例中,我只有两列0和1(以及D轴是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')
感谢您的帮助!
答案 0 :(得分:0)
让我们尝试一种不同的方法,看看这是否更有意义:
将数据重塑为a "tidy"数据格式
使用带有颜色参数的散景高级散点图
代码:
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')