d3.js - D3 线性梯度基线不在平均线上。我如何将线性渐变线放在我想要的确切位置?
问题描述
我发布的上一个问题的示例代码非常混乱。所以我把它瘦下来了。
我尝试为区域图中的两个区域着色
- 高于平均线和
- 低于平均线。
即使我计算了整个区域平均值的百分比值,它仍然显示出看起来与平均值略有偏离的梯度。
我关注的代码如下。
let v1=d3.max(valuesonly)
let v2=d3.min(valuesonly)
let offsetpercentage=(averagevalue/(v1-v2))*100
let quad1=offsetpercentage*1/4
let quad2=offsetpercentage*2/4
let quad3=offsetpercentage*3/4
let quad4=(100-offsetpercentage)*1/4
let quad5=(100-offsetpercentage)*2/4
let quad6=(100-offsetpercentage)*3/4
defs = svg.append("defs");
var gradient = defs.append("linearGradient")
.attr("id", "area-gradient")
.attr("gradientUnits", "userSpaceOnUse")
.attr("x1", xscale(focusitem[0].date)).attr("y1", yscale(d3.min(valuesonly))-margin.bottom)
.attr("x2", xscale(focusitem[0].date)).attr("y2", yscale(d3.max(valuesonly))-margin.top)
.selectAll("stop")
gradient.data([
{offset: '0%' , color: "rgba(245,75,94,0.5)"},
{offset: `${quad1}%` , color: "rgba(245,75,94,0.4)"},
{offset: `${quad2}%` , color: "rgba(245,75,94,0.3)"},
{offset: `${offsetpercentage}%`, color:"rgba(245,75,94,0.0)"},
{offset: `${quad5}%` , color: "rgba(22,119,252,0.5)"},
{offset: `${quad6}%` , color: "rgba(22,119,252,0.7)"},
{offset: "100%", color: "rgba(22,119,252,1)"}
])
.enter()
.append("stop")
.attr("offset", function(d) { return d.offset; })
.attr("stop-color", function(d) { return d.color; })
整个代码在以下链接中。
https://codepen.io/jotnajoa/pen/KKzmmLN?editors=1011
先感谢您。
解决方案
我找到了这个原因!我想分享一下原因。
.attr("x1", xscale(focusitem[0].date))
.attr("y1", yscale(d3.min(valuesonly))-margin.bottom)
.attr("x2", xscale(focusitem[0].date))
.attr("y2", yscale(d3.max(valuesonly))-margin.top)
上面的部分是问题。在这种情况下,规模不应该有余量。
推荐阅读
- c# - 调试由两个系统上的两个独立 Windows 服务运行的 C# 代码
- cassandra - 按主分区分组
- jquery - jquery自动完成搜索失败
- ios - Xcode 10.1:运行 UITest 时 Pod 未编译
- configuration - 用于远程路由的 Akka 目标节点
- android - Android 约束布局对齐
- laravel - 如何以编程方式更改 Laravel Omnipay 对象?
- python - 将 url 参数传递给序列化程序
- python-3.x - GridSearchCV 和 RandomizedSearchCV (sklearn):TypeError:__call__() 缺少 1 个必需的位置参数:'y_true'
- python - reshape 函数如何 reshape 2 扁平化水平堆叠在一起的一维数组?