我正在尝试使用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 - 散景图时间序列-LMLPHP

关于python - 散景图时间序列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43475198/

10-13 04:46