在图例刻度中显示正确的域值的问题

Posted

技术标签:

【中文标题】在图例刻度中显示正确的域值的问题【英文标题】:Issue with displaying correct domain values in legend tick 【发布时间】:2021-11-28 11:43:27 【问题描述】:

我正在使用 d3.interpolateViridis 处理连续颜色图例。我在显示图例刻度值时遇到问题。我想在图例中显示我的最小值(一端)和最大值(另一端)(域值)。我尝试更改刻度值但没有帮助。

这是我的代码 sn-p:

//scale
var colorScale2 = d3.scaleSequential(d3.interpolateViridis).domain([0, 0.38]);
    
//other code
    
var legendscale = d3.scaleLinear()
.range([0, legendheight - margin.top - margin.bottom])
.domain(colorscale.domain());
        
// scale tick
var legendaxis = d3.axisRight()
.scale(legendscale)
.tickSize(16)
.ticks(2);

另外,我分享了 JS fiddle 链接,它的刻度为 0.0 和 0.2(这应该是最大值:0.38)。

https://jsfiddle.net/shru90/e42vcLy0/30/

注意:我的最小值为 0,最大值为 0.38(可能因数据而异)

【问题讨论】:

【参考方案1】:

默认情况下,轴将刻度设置为漂亮的圆形值。如果您想要为特定的值打勾,那么您可以设置tickValues:

d3.axisRight()
    .scale(legendscale)
    .tickSize(16)
    .tickValues(legendscale.domain());

【讨论】:

谢谢。你的解决方案对我有用,丹。我之前尝试过通过在数组中传递最小和最大域值来尝试刻度值,因此它不起作用。我之前路过的路错了。

以上是关于在图例刻度中显示正确的域值的问题的主要内容,如果未能解决你的问题,请参考以下文章

图例与 Highcharts 中 xAxis 上的列刻度不匹配

使用 ggplot2 获取图例以正确显示

使用文本标记最小和最大刻度填充渐变图例:ggplot2

如何在 matplotlib 中更改图例字体名称

D3.js:为啥我的图例刻度线的文字消失了?

有没有办法在下载时显示正确的切换图例?