- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想构建一个有点复杂的轴,它可以处理线性数据到像素位置,直到某个值,在该值中所有内容都被归入一个类别,因此具有相同的数据到像素值。例如,考虑具有以下刻度线的 y 轴:
0%, 10%, 20%, 30%, 40%, 50%+
在这种情况下,所有高于 50% 的数据在绘制时将具有相同的 y 值。
这是一个相当常见的图表结构,但我还没有看到 d3 实现,这使得它很难从发射台上下来。我最初认为我可以使用 d3.scaleOrdinal()
或 d3.scaleThreshold
,但是这样做会丢失数据中的关键细微差别。在我的数据集中,保留小数点(以及不是 10 的完美增量的数字)并精确绘制它们非常重要。据我所知,这只能通过 d3.scaleLinear()
实现。
我的下一个想法是通过使用两个彼此相邻的分离轴来创建它,以创建线性+阈值统一比例尺的错觉。
var xScaleLinear = d3.scaleLinear()
.range([0,500])
var xScaleThreshold = d3.scaleThreshold()
.range([500,520])
虽然这在理论上可行,但它意味着其余代码会出现很多复杂情况。绘制数据点时,每个数据点都需要一个 if 语句,该语句指向两个完全不同的比例调用。更不用说我必须添加一堆美学上的调整,比如只删除线性刻度的右端刻度,等等。
d3 能否提供任何东西来帮助开发人员以更具可扩展性的方式统一规模?还是我应该预料到需要诉诸偷偷摸摸的/临时解决方案?
最佳答案
使用 scale.clamp
可以轻松将超过 50% 的所有内容 chop 为 50% 的值:
const scale = d3.scaleLinear()
.domain([0, 0.5])
.range([0, 500])
.clamp(true);
d3.range(11).map(d => console.log(d * 10 + "% in the scale is: " + scale(d / 10)))
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
另一方面,如果您想为超出限制的域值设置一个不同范围,只需设置一个域和一个具有中间值的范围。例如,这里的常规域(从 0 到 50%)在范围内从 0 到 500,所有超过 50% 的都将定位在 520:
const scale = d3.scaleLinear()
.domain([0, 0.5, (0.5 + 1e-6), 1])
.range([0, 500, 520, 520]);
d3.range(11).map(d=>console.log(d * 10 + "% in the scale is: " + scale(d/10)))
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
关于javascript - 线性+阈值统一尺度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58496453/
我的代码中有一个 ggplot2 绘图函数。当文件作为 R 代码来源时,该函数工作正常,但是当我将此函数包含在 R 包中时(当然,我在包的描述和命名空间文件中包含 ggplot2 和比例),我得到以下
VINS中的重力-尺度-速度初始化(2) 细化重力 \(\quad\) 上一篇文章中得到的 \(g\) 一般是存在误差的。因为在实际应用中,当地的重力向量的模一般是已知固定大小的(所以只有
我正在使用 perl 脚本解析一些天气数据,然后使用 gnuplot 在 3 行 2 列显示中绘制这些数据。除了最后一张图“累积降雨量”之外,我的所有图表似乎都可以正常工作。该图实际上绘制正确,但 y
我有两组数据,我想用条形图绘制。但问题是这两组数据的规模截然不同。如果我只使用 bar(A),它看起来像这样:分组但第二个数据集几乎不可见,因为比例。 但是,如果我使用 plotyy(x,y1,x,y
考虑以下用于绘制 matplotlib 图的 python 代码: import matplotlib.pylab as pp import numpy as np alpha = np.linspa
在调查 ConflictError ( see this previous question ) 时,我看到了很多 persistent.mapping.PersistentMapping 冲突。 具
我正在阅读一些代码,其中我注意到使用pyplot.xaxis('log')和pyplot.yaxis('log')时发生了很大的变化。所以基本的散点图如下所示: 添加后: plt.xscale('lo
当覆盖具有相同长度但不同尺度数据的 ggplot 密度图时,是否可以对图的 x 尺度进行归一化以使密度匹配?或者有没有办法标准化密度 y 尺度? library(ggplot2) data <- da
如何在 pyqtgraph 中生成具有两个 Y 尺度的图? 我还需要两个不同颜色的(对应于线条的颜色)。 在 matplotlib 中,可以使用 twinx 来完成,如this example . 如
我有一个看起来像这样的表 我将突出显示的部分作为矩阵,我想对其执行 imshow。我想让绘图的 x 尺度为对数,通过查看最上面一行的参数值可以理解这一点。 matplotlib 是怎么做到的? 最佳答
我正在使用 nvd3 绘制一些系列,并想在绘图中添加一些任意矩形。我如何访问 d3 图的底层 x 和 y 比例,以便我可以将我的矩形坐标转换为 svg 像素坐标,以便与现有数据具有相同的比例: fun
我是一名优秀的程序员,十分优秀!