ridgeplot_subcoordinates#
使用 ridgeline 图,基于 概率感知 数据集。
此示例演示了使用子坐标将山脊线定位在不同类别中的用途。这有效地允许用户创建子图,同时在 bokehjs 中传播真实值,例如,在使用悬停工具显示数据时。
子坐标的另一种方法是类别偏移,这在 examples/topics/categorical/ridgeplot.py
中展示。请注意,类别偏移无法访问真实值,因此更适合于演示目的而不是分析。
该图表显示了对提示“你将“非常有可能”这个短语赋予什么概率”的响应分布。
细节
- 样本数据:
- Bokeh API:
- 更多信息:
- 关键词:
alpha,类别,调色板,补丁,山脊线,子坐标,子图
import colorcet as cc
from numpy import linspace
from scipy.stats import gaussian_kde
from bokeh.models import ColumnDataSource, FixedTicker, PrintfTickFormatter, Range1d
from bokeh.plotting import figure, show
from bokeh.sampledata.perceptions import probly
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), tools="hover", toolbar_location=None)
p.hover.tooltips = [
("data (x, y)", "($x, $y)"),
("name", "$name"),
]
for i, cat in enumerate(reversed(cats)):
target_start = cats.index(cat) + 0.5 # middle of the current category
target_end = target_start + 20 # arbitrary scaling to make plots pop
xy = p.subplot(
x_source=p.x_range,
y_source=Range1d(start=0, end=1),
x_target=p.x_range,
y_target=Range1d(start=target_start, end=target_end),
)
pdf = gaussian_kde(probly[cat])
source.add(pdf(x), cat)
xy.patch("x", cat, color=palette[i], alpha=0.6, line_color="black", source=source, name=cat)
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)