【发布时间】:2019-09-09 23:58:15
【问题描述】:
我正在尝试在 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 这样的中级绘图界面,而不是创建独立的矩形所有的价值观。
【问题讨论】: