ridgeplot#

使用 脊线图概率感知 数据集。

此示例演示了使用分类偏移显式定位分类值的方法,在本例中允许创建临时的子图。这是因为无法提供真实数据以供展示,例如,无法在悬停工具中显示脊线值。

更好的替代方案是使用子坐标,如示例 examples/plotting/ridgeplot_subcoordinates.py 中所示。

此图表显示了对提示“您将为短语“极有可能”分配多少概率”的响应的分布。

细节

样本数据:

bokeh.sampledata.perceptions

Bokeh API:

figure.patchbokeh.models.ColumnDataSource

更多信息:

带有偏移量的分类序列

关键词:

alpha、分类、调色板、补丁、脊线

import colorcet as cc
from numpy import linspace
from scipy.stats import gaussian_kde

from bokeh.models import ColumnDataSource, FixedTicker, PrintfTickFormatter
from bokeh.plotting import figure, show
from bokeh.sampledata.perceptions import probly


def ridge(category, data, scale=20):
    return list(zip([category]*len(data), scale*data))

cats = list(reversed(probly.keys()))

palette = [cc.rainbow[i*15] for i in range(17)]

x = linspace(-20, 110, 500)

source = ColumnDataSource(data=dict(x=x))

p = figure(y_range=cats, width=900, x_range=(-5, 105), toolbar_location=None)

for i, cat in enumerate(reversed(cats)):
    pdf = gaussian_kde(probly[cat])
    y = ridge(cat, pdf(x))
    source.add(y, cat)
    p.patch('x', cat, color=palette[i], alpha=0.6, line_color="black", source=source)

p.outline_line_color = None
p.background_fill_color = "#efefef"

p.xaxis.ticker = FixedTicker(ticks=list(range(0, 101, 10)))
p.xaxis.formatter = PrintfTickFormatter(format="%d%%")

p.ygrid.grid_line_color = None
p.xgrid.grid_line_color = "#dddddd"
p.xgrid.ticker = p.xaxis.ticker

p.axis.minor_tick_line_color = None
p.axis.major_tick_line_color = None
p.axis.axis_line_color = None

p.y_range.range_padding = 0.12

show(p)