Javascript d3 v3折线图上的笔划宽度

Javascript d3 v3折线图上的笔划宽度,javascript,css,d3.js,Javascript,Css,D3.js,我正在使用D3V3中的响应折线图,我在轴的笔划宽度方面遇到了问题。现在它们是超厚的,我一直在轴上添加笔划宽度样式,没有任何变化 请参阅JSFIDLE的第149行 如何更新每个轴的笔划宽度?这里有一个有用的方法-您可以使用一些CSS解决您的问题: path.domain { fill: none; stroke: slategray; shape-rendering: crispEdges; } 你应该得到这个: 我倾向于同意评论员的观点,即是时候从这个版本的D3开始了——当然,如

我正在使用D3V3中的响应折线图,我在轴的笔划宽度方面遇到了问题。现在它们是超厚的,我一直在轴上添加笔划宽度样式,没有任何变化

请参阅JSFIDLE的第149行

如何更新每个轴的笔划宽度?

这里有一个有用的方法-您可以使用一些CSS解决您的问题:

path.domain {
  fill: none;
  stroke: slategray;
  shape-rendering: crispEdges;
}
你应该得到这个:

我倾向于同意评论员的观点,即是时候从这个版本的D3开始了——当然,如果你的情况允许的话

fiddle的v6端口在轴上没有笔划宽度问题,它们是开箱即用的:

//资料 风险值数据=[{ 年份:2002年, 人口:191207000 }, { 年份:2003年, 人口:192618000 }, { 年份:2004年, 人口:175096000 }, { 年份:2005年, 人口:172282000 }, { 年份:2006年, 人口:177793000 }, { 年份:2007年, 人口:181036000 }, { 年份:2008年, 人口:176943000 }, { 年份:2009年, 人口:184521000 }, { 年份:2010年, 人口:173823000 }, { 年份:2011年, 人口:171140000 }, { 年份:2012年, 人口:172033000 }, { 年份:2013年, 人口:180738000 }, { 年份:2014年, 人口:179023000 }, { 年份:2015年, 人口:177430000 }, { 年份:2016年, 人口:190636623 }, { 年份:2017年, 人口:199579997 }, { 年份:2018年, 人口:201327425 }, { 年份:2019年, 人口:20763646 }, { 年份:2020年, 人口:218370375 } ]; //解析日期/时间 var timeParse=d3。timeParse%Y; var formatValue=d3.format.2s; //部队类型 函数类型数据数组{ dataArray.forEachfunctiond{ d、 年=时间解析。年; d、 保留率=+d.总体; }; 返回数据数组; } 数据=类型数据; //图表配置 //设置画布/图形的尺寸 var margin={top:5,right:0,bottom:30,left:65}, 宽度,//下面定义了宽度 高度=250-margin.top-margin.bottom; //设置刻度范围 var xScale=d3.scaleTime; var yScale=d3.刻度线性范围[高度,0]; //定义轴 var xAxis=d3.axisBottom.scalexScale; var yAxis=d3.0左 .鳞片鳞片 .滴答声{ 返回值 };; //创建一条线 var-line=d3.line; //添加svg画布 var svg=d3.selectpolice-chart2 .appendsvg .attrhight,height+margin.top+margin.bottom; var artboard=svg.appendg .attransform,translate+65+,+5+; //根据数据设置域范围 xScale.domaind3.extentdata,函数d{ 返回d.year; }; yScale.domain[ d3.mindata,功能D{ 返回Math.floord.population-5000000; }, d3.maxdata,函数D{ 返回Math.floord.population+5000000; } ]; //在上面画一条线 var path=artboard.appendpath.data[data] .样式“填充”、“无” .style'stroke'、'blue' .样式“笔划宽度”、“3px”; //添加X轴 var xAxisEl=artboard.appendg .attrtransform,translate0,+高度+ //添加Y轴 var yAxisEl=artboard.appendg .callyAxis; //设置线条条的样式 svg.appendtext .attrclass,y标签 .attr文本锚定,结束 attry先生,12岁 .attrx,-20 .attryAxis,1em .attransform,旋转-90 .text安全部预算为万美元; //绘图 功能图{ window_width=parseIntd3。选择“主体”。样式为“宽度”,10 //TODO:校准此项: //console.logwindow_宽度; 如果窗宽<500 右边距=0.2*窗宽; 否则{ 右边距=0.5*窗宽; } //重置宽度 width=parseIntd3.选择“body”。样式为“width”,10-margin.left-margin\u right; //设置svg维度 svg.attrwidth,width+margin.left+margin\u right; //为xScale设置新范围 xScale.范围[0,宽度]; //为x轴指定调整大小的比例 xAxis.scalexScale; //绘制新的X轴 xAxisEl.callxAxis; //指定线的新特性 line.x函数{ 返回xScaled.year; } .功能正常{ 回归尺度人口; }; //根据上面创建的线绘制路径 路径属性行; } //调用此函数一次,以最初绘制图表 图纸; //调整大小 //在调整大小时重新绘制图表 window.addEventListener'resize',drawChart;
哇,你使用的是D3V3,我建议你使用最新版本,这一个已经过时了。样式不起作用,因为它实际上是一条6px宽的路径。尝试设置填充属性和笔划的样式,以检查@CarlosMoura指出的差异,您使用的是非常过时的D3 5 y.o版本,至少您需要使用V6重新编写代码。JS FIDLE没有V6的选项,但您可以将其指定为en外部资源:。我很肯定它也会解决axis的问题。
path.domain {
  fill: none;
  stroke: slategray;
  shape-rendering: crispEdges;
}