- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
(i) 我正在尝试删除 y 轴结束刻度,但 tickSizeOuter(0)
在这种情况下对我没有帮助。
(ii) 我还想在 y 轴结束刻度值 (60) 之后有一些填充,类似于 x 轴。我尝试了 padding
和 paddingOuter
但这对我没有帮助。
这是 stackblitz .
这是我的代码:
maxAllowed = 60;
graphData = [
{
hrCount: 4,
resCount: 2
},
{
hrCount: 8,
resCount: 5
},
{
hrCount: 12,
resCount: 10
},
...
const margin = { top: 25, right: 25, bottom: 25, left: 25 };
const width =
document.getElementById("svgcontainer").parentElement.offsetWidth -
(margin.left + margin.right);
const height =
document.getElementById("svgcontainer").parentElement.offsetHeight -
(margin.top + margin.bottom);
// Remove any existing SVG
d3.select("#svgcontainer")
.selectAll("svg > *")
.remove();
// Group
const g = d3
.select("#svgcontainer")
.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + ", " + margin.top + ")");
// Scale
// x-scale
const xScale = d3
.scaleBand()
.domain(this.graphData.map((d: any) => d.hrCount))
.range([0, width]);
// y-scale
const yScale = d3
.scaleLinear()
.domain([0, this.maxAllowed])
.range([height, 0]);
// y-axis gridline
g.append("g")
.attr("class", "y-axis-grid")
.call(
d3
.axisLeft(yScale)
.tickSize(-width)
.tickFormat("")
.ticks(5)
);
// Axis
// x-axis
const xAxis = d3.axisBottom(xScale).tickSizeOuter(0);
g.append("g")
.attr("transform", "translate(0, " + height + ")")
.attr("class", "graph-axis")
.call(xAxis.scale(xScale))
.append("text")
.attr("x", width)
.attr("y", -6)
.attr("text-anchor", "end")
.attr("font", "10px sans-serif")
.attr("letter-spacing", "1px")
.attr("fill", "#8997b1")
.text("Hours");
// y-axis
const yAxis = d3
.axisLeft(yScale)
.ticks(5)
.tickSizeOuter(0);
g.append("g")
.attr("class", "graph-axis")
.call(yAxis.scale(yScale))
.append("text")
.attr("transform", "rotate(-90)")
.attr("y", 6)
.attr("dy", ".71em")
.style("text-anchor", "end")
.attr("font", "10px sans-serif")
.attr("letter-spacing", "1px")
.attr("fill", "#8997b1")
.text("Resources");
// Data line
const line = d3
.line()
.x((d: any) => xScale(d.hrCount))
.y((d: any) => yScale(d.resCount));
const path = g
.append("path")
.attr("fill", "none")
.attr("stroke", "#088dda")
.attr("stroke-width", "2px")
.attr("d", line(this.graphData));
// Transition
const totalLength = path.node().getTotalLength();
path
.attr("stroke-dasharray", totalLength + " " + totalLength)
.attr("stroke-dashoffset", totalLength);
path
.transition()
.duration(4000)
.attr("stroke-dashoffset", 0);
// Data dots
g.selectAll("line-circle")
.data(this.graphData)
.enter()
.append("circle")
.attr("r", 4)
.attr("fill", "#088dda")
.attr("cx", (d: any) => xScale(d.hrCount))
.attr("cy", (d: any) => yScale(d.resCount));
}
最佳答案
我检查了您的代码并提出了以下方法来解决您的问题。
您可以通过将 y 轴域映射到数据中存在的最大值 + 一些填充高度(我采用了 5)来将顶部填充添加到图表中。为此需要进行的更改:
maxAllowed = 0;
this.maxAllowed = d3.max(this.graphData, d => d.hrCount) + 5; // max value + padding
// y-scale
const yScale = d3
.scaleLinear()
.domain([0, this.maxAllowed])
.range([height, 0]);
对于要删除最外面的 tickSize 的第二个更改,您可以使用 .tickSizeOuter(0);
轻松完成它。问题是您看不到此更改,因为 tickSizeOuter 为零那些没有相应 y 刻度值的刻度线的值(y 轴的终点有一些刻度 y 值)。
但是如果您标记 this.maxAllowed = 65
的值并删除 tickSizeOuter(0)
那么您将能够看到 y 轴的末端没有 y 刻度值,但其刻度线向外延伸。在这些情况下,我们使用 tickSizeOuter(0)
来移除刻度线。
IMO 你应该只使用它,不应该删除 0 值的刻度线。它会导致不必要的结果。但是,如果您仍想删除 0 值的刻度线。您可以使用以下代码并将其从 svg 中删除:
d3.selectAll(".y-axes-tick .tick line").each(function(d, i) {
debugger;
if (i === 0) {
this.remove();
}
});
请在这里找到 working stackblitz
关于d3.js - 使用 tickSizeOuter(0) 删除 y 轴结束刻度不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64980593/
如何使用 plot() 在 XY 图中绘制第二条线,以不同的比例(如本例(紫色线))? 第一行(红色)我的 R 代码是这样的: p <- sqlQuery(ch,"SELECT wl,param1 F
我正在寻找一种将折线图步骤设置为仅完整数字步骤的方法,例如 1,2,3,4,5..... 目前它看起来像这样: 这些是我的选择。我搜索了很多但找不到解决方案。 let options = {
我的问题是如何将 Y 轴刻度的间隔从 0.2 更改为 0.1?我已经尝试了一切,但我很困!帖子底部堆叠条形图的图片 dpi=600 #pixels per square inch A <- c(
有没有办法根据当前数据集在 D3 轴上动态设置 ticks。我遇到的问题是我的时间范围(x 轴)可能变化很大。对于一些数据集来说,它是几年的值(value),对于其他数据集来说是几个月,在某些情况下只
我已经使用默认参数创建了一个 dojo 蜘蛛图。我需要隐藏轴标签(刻度上的数据值,而不是轴标题)。 我已经尝试过'ticks: false',但是它不适用于蜘蛛图。 require(["dojo/_b
有没有一种简单的方法可以在绘图 Axis 上获得自定义缩放比例? 例如,semilogy 函数提供 {x, log10(y)} 缩放比例,这样就可以自动放大/缩小并自动调整刻度和标签。我想对 {x,
如何修改图形和图表的 y Axis 刻度?我想要这样的东西:my_figure.y_range.end = my_figure.y_range.end * 1.3 所以我想要更高一点的y轴。谢谢! 最
我正在尝试使用 recharts 添加图表一些货币的最新汇率。数据显示正确,但图表始终从 0 开始并略高于最大值。 图表是正确的,但它不需要从 0 开始,因为这样做,它几乎是一条线。 这是图表的图片:
我有一个 SWT Scale 小部件,我需要在刻度上的刻度上添加标签。 有没有办法做到这一点?也许在 slider 小部件上? 谢谢 最佳答案 这可能不是您所要求的,但您可以在 Scale 小部件旁边
这是一个从 .xlsx 文件中读取数据并利用 Plotly 库绘制气泡图的程序。这是 .xlsx 文件的原始数据: 1991 1992 1993 1994 1995
我这里有一个代码笔 - https://codepen.io/anon/pen/yvgJKB 我有一个简单的堆积条形图。 我想将其制作成一个组件,因此我需要传入值以使其可重用 x 缩放函数返回d.da
让我们看一个基本的演示折线图: jsfiddle $(function () { $('#container').highcharts({ //all the code there 我想强制
是否可以在 t-sql 中获得像 DateTime.Ticks 这样的 C# 内容? 感谢帮助 最佳答案 您不太可能从 SQL 中获得与 DateTime.Ticks 相同的精度,因为 SQL 不能以
我正在使用 Bokeh 生成散点图,每个 X 值具有不同的 Y 值。当 Bokeh 生成绘图时,它会根据绘制的值的数量自动填充 x 轴间距。我希望 x 轴上的所有值均匀分布,无论单个数据点的数量如何。
我使用下面的代码使用谷歌图表生成折线图 google.charts.load('current', {packages: ['corechart', 'line']});
我正在尝试在 d3 中构建堆积条形图。 这是我的 jsfiddle: http://jsfiddle.net/maneesha/gwjkgruk/4/ 我正在尝试修复它,使 y 轴从零开始。 我认为这
我有一个 d3 时间刻度图表。目前,轴刻度为每个数据对象呈现一个日期。例如,数据的范围可以是 1 天的数据、1 个月内 2 周的数据、5 个月的数据甚至更多。 理想情况下,我们希望显示带有周数的刻度,
当使用“Cassic”折线图时,我可以为 hAxis 分配刻度,还有这样的格式和标题: var options = { hAxis: { format:'h a', title
我的累积折线图没有正确构建 yScale。 给定要构建图表的数据: var data = [{ key: "Page view", values: [ ["2013-07-01 00:
在 y 轴上使用两个具有正常整数值的 DateAxisSeries(x 轴)我的 jqPlot 将 y 刻度呈现两次。 像这样: 2| 2| 1| 1| 0|_____________________
我是一名优秀的程序员,十分优秀!