D3.js 当两个条形图的值均为0时,相对条形图模式标签中的Plotly.js重叠
继续我的旅程。我正在使用,当两个相对的条都有值D3.js 当两个条形图的值均为0时,相对条形图模式标签中的Plotly.js重叠,d3.js,plotly,plotly.js,D3.js,Plotly,Plotly.js,继续我的旅程。我正在使用,当两个相对的条都有值0时,我需要显示一些自定义文本。值为0时,两条条线的增长方向相同,标签重叠的问题: 我考虑过的唯一解决方案是检查值何时为0,并将其动态更改为类似-0.009的值,然后手动显示正确的值,尽管它实际上是错误的。但这是一个麻烦的解决方案,图表会不断地为那些不可接受的值呈现微小的条形图 标签方向可以手动控制吗?谢谢。最初的想法 一种解决方案是将每条记录道的基本参数指定为0,如果值为0,则为负条形使用负的基本值 const altbase=-1000/3;
0
时,我需要显示一些自定义文本。值为0时,两条条线的增长方向相同,标签重叠的问题:
我考虑过的唯一解决方案是检查值何时为0
,并将其动态更改为类似-0.009
的值,然后手动显示正确的值,尽管它实际上是错误的。但这是一个麻烦的解决方案,图表会不断地为那些不可接受的值呈现微小的条形图
标签方向可以手动控制吗?谢谢。最初的想法
一种解决方案是将每条记录道的基本参数指定为0,如果值为0,则为负条形使用负的基本值
const altbase=-1000/3;
常量trace1={
x:xValue,
y:[FN],
名称:`Model 1`,
文本:`${FN}
FN`,
类型:'bar',
基数:0,
text位置:“外部”
};
常量trace2={
x:xValue,
y:[-TN],
名称:“型号1”,
正文:`${TN}
TN`,
基地:altbase,
类型:'bar',
text位置:“外部”
};
看起来-max_y_lim/3
会产生一个良好的偏移量,这就是altbase
的用途
如果TN==0,您还可以将altbase
定义为变量检查:
var altbase=((TN==0)?-FP/3:0);
UPDATE1:或者您可以绕过变量,将if语句直接放入跟踪定义中,如base:((TN==0)?-FP/3:0),
更新2:偏移量的一个稍微优雅的公式是:
var altbase=((TN==0)?-1.4/4*数学最大值(FN,TN,TP,FP):0);
最后更新
经过一些思考后,可能最好总是计算altbase
,以便它可用于其他潜在的负极条,然后在需要时使用if语句设置base:
var altbase=-1.4/4*数学最大值(FN、TN、TP、FP);
常量trace1={
x:xValue,
y:[FN],
名称:`Model 1`,
文本:`${FN}
FN`,
类型:'bar',
基数:0,
text位置:“外部”
};
常量trace2={
x:xValue,
y:[-TN],
名称:“型号1”,
正文:`${TN}
TN`,
基数:((TN==0)?altbase:0),
类型:'bar',
text位置:“外部”
};
是代码笔中的实现
谢谢你的回答,但有点问题。如果我改变一点数字,它就不起作用了。看看这个代码笔:我意识到这两个条形图是独立的图,因此基于所有值计算
altbase
并不总是有效的。将它们组合成一个带有两条横线的地块是可行的。或者,使用现有框架进行更简单的计算是,但如果两者都为零,则这只会抵消负面影响。类似于base:((TN==0&FN==0)?-.25:0)
也是一个在一个图中有两条线的例子。谢谢你的回答,但我不能接受。这并不容易实现,我得出的结论是,除了继续与plotlyjs团队讨论并在库中添加修复程序之外,没有解决此问题的好方法。实际上,我在这里打开了一个问题:我将尝试安排修复并提交它。我对你的努力表示歉意和感谢。