【问题标题】:Bokeh vbar figure with reversed y-axis具有反转 y 轴的 Bokeh vbar 图
【发布时间】: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 这样的中级绘图界面,而不是创建独立的矩形所有的价值观。

【问题讨论】:

    标签: python pandas bokeh


    【解决方案1】:

    散景vbarbottom=0 作为默认设置,因此如果您翻转轴并保留该默认设置,那么只有栏也翻转才有意义。大概你会想要设置bottom=6(或者任何有意义的作为你规模上的“最低”值)。

    【讨论】:

    • 谢谢!我没有意识到有这么简单的解决方案。这正是我所需要的:现在一切正常!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多