提问人:Basj 提问时间:11/6/2023 更新时间:11/7/2023 访问量:40
始终在 Plotly.js 热图中显示颜色条的最小值和最大值
Always show min and max of colorbar in a Plotly.js heatmap
问:
在此示例中:
const z = Array.from({length: 50}, () => Array.from({length: 50}, () => Math.floor(Math.random() * 500 + 47.2)));
Plotly.newPlot('plot', [{z: z, type: 'heatmap'}]);
<script src="https://cdn.plot.ly/plotly-2.26.0.min.js"></script>
<div id="plot"></div>
颜色条不能精确显示最小值/最大值。这里我们只看到 、 、 、 ,而看不到接近 的最小值,具体取决于随机样本。100
200
500
47.2
如何使用 Plotly 在颜色栏中显示最小值/最大值?
答:
1赞
EricLavault
11/7/2023
#1
您可以直接自定义跟踪数据中的颜色条
。
基本上你想指定tickvals
,这意味着你相应地设置tickmode
,例如。像这样:
const z = Array.from({length: 50}, () => Array.from({length: 50}, () => Math.floor(Math.random() * 500 + 47.2)));
// Computed from z.flat() : [zmin, ...someRange, zmax]
const tickvals = [47, 100, 200, 300, 400, 500, 547]
const data = [{
z: z,
type: 'heatmap',
colorbar: {
tickmode: 'array',
tickvals
}
}];
Plotly.newPlot('plot', data);
<script src="https://cdn.plot.ly/plotly-2.26.0.min.js"></script>
<div id="plot"></div>
评论
0赞
Basj
11/7/2023
谢谢@EricLavault!你有没有看到一种自动获得最小值和最大值以及最佳滴答值的方法?示例:最小值为 99,最大值为 402,则 [99, 100, 200, 300, 400, 402] 对于可读性而言不是最佳的,因为 99 和 100 将相互重叠。也许有一种内置的优化方式来显示滴答声?
0赞
EricLavault
11/7/2023
对于最小值/最大值,您可以这样做,但是 afaik 没有办法使行为包括 zmin/zmax。指定 tickvals 意味着我们事先计算它们,特别是 zmin 和 zmax 之间的范围。在示例中,范围步长为 100,这是首先要计算的内容,它取决于要显示的刻度数量级和最大刻度数;范围 start 或 tick0 (100) 是 zmin 之后的第一步,如果小于相对于 dtick 的某个阈值,您可以将其排除在外......zmin = Math.min(...z.flat())
tickmode="auto"
dtick
zmax - zmin
tick0 - zmin
0赞
EricLavault
11/7/2023
tick0、dtick 等,这是我正在使用的情节词汇,您可以参考文档来获得正确的含义。
评论