散景Y轴反转的vbar图形

时间:2019-09-09 07:57:30

标签: python pandas bokeh

我正在尝试在Bokeh 1.1中为调查评级数据创建一个vbar数据,该数据遵循人们通常期望的相反顺序。在此数据集中,“极好”为1.0(最高分),“极差”为5.0(最低分),我正在绘制平均值。因此,我希望有一个从图表底部的5.0到1.25的顶部或其他平均值的条形。

在下面的代码中,我指定了:

y_range = (5,1) 

这会使轴指向正确的方向,但不幸的是(又如预期的那样)翻转了vbar,使其从顶部向下移动。

在另一个地方我用过

fig.y_range.flipped = True 

作为带有线形图的类似挑战的临时解决方案,但是当应用于vbar时,它仍然会产生从图表顶部向下的条形,而我仍然希望该条从底部向上条形。

这是我一直在使用的代码的快速版本:

import pandas as pd
import numpy as np
from bokeh.plotting import figure
from bokeh.io import show, output_file, output_notebook
from bokeh.transform import dodge

Years = [2010, 2011, 2010, 2012, 2011, 2013, 2013]
ratings_df = pd.DataFrame(Years)
ratings_df.columns = ['Years']
ratings_df['Math_Mean_Ratings'] = [1.0, 2.0, 1.5, 3.0, 5.0, 1.0, 2.0]
ratings_df['German_Mean_Ratings'] = [3.0, 1.0, 2.0, 3.0, 4.0, 1.5, 2.0]
ratings_df

table1 = pd.pivot_table(ratings_df, values=['Math_Mean_Ratings', 'German_Mean_Ratings'], index='Years', aggfunc=np.mean)

fig_title = 'Instructor Ratings: 2010 to 2013'
fig = figure(plot_width=600, plot_height=300, title = fig_title, y_range = (5,1))

fig.vbar(x=dodge('Years', -0.2, range=p2.x_range), width = 0.3, top='Math_Mean_Ratings', source=table1, color='deepskyblue')
fig.vbar(x=dodge('Years', 0.2, range=p2.x_range), width = 0.3, top='German_Mean_Ratings', source=table1, color='midnightblue')

show(fig)

最终输出将有很多年,并且每年会有很多不同的平均值,我将不得不频繁地更新它,所以我宁愿使用像vbar这样的中级绘图界面而不是为它们创建独立的矩形。所有值。

1 个答案:

答案 0 :(得分:0)

散景vbar的默认设置为bottom=0,因此,如果翻转轴并保留该默认值,则条形也同样有意义。大概您想设置bottom=6(或任何有意义的标尺上的“最低”值)。