散景情节时间序列

时间:2017-04-18 14:38:04

标签: python pandas dataframe bokeh

我正在尝试使用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')

感谢您的帮助!

1 个答案:

答案 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')

enter image description here