我有一個d3折線圖的小視覺問題。如何使d3線條圖中的線條更平滑?
也許任何人有這個簡短的解決方案:
我想有以下平滑的三條線比他們。
我寧願希望有線條看起來像這樣:
我已經選中,這不是筆畫寬度導致這種錯誤的視覺行爲。
如果問題不清楚:基本上,我想實現更高的圖表分辨率,看起來像是由更大的像素組成。
這是代碼,導致這個結果:
var temp = g.selectAll(".temp")
.data(stationData)
.enter().append("g")
.attr("class", "temp");
let values = stationData.map(function(d){
return {
"hour": parseFloat(d.hour),
"temperature": parseFloat(d.avgtemp)
}
});
temp.append("path")
.attr("id", "avgtemp")
.attr("class", "line")
.attr("d", function(d) {
return line(values);
})
temp.append("text")
.datum(function(d) { return {value: values[values.length - 1]}; })
.attr("transform", function(d) { return "translate(" + x(d.value.hour) + "," + y(d.value.temperature) + ")"; })
.attr("x", 3)
.attr("dy", "0.35em")
.style("font", "12px sans-serif")
.text("Avg Temperature");
values = stationData.map(function(d){
return {
"hour": parseFloat(d.hour),
"temperature": parseFloat(d.mintemp)
}
});
temp.append("path")
.attr("id", "mintemp")
.attr("class", "line")
.attr("d", function(d) {
return line(values);
})
temp.append("text")
.datum(function(d) { return {value: values[values.length - 1]}; })
.attr("transform", function(d) { return "translate(" + x(d.value.hour) + "," + y(d.value.temperature) + ")"; })
.attr("x", 3)
.attr("dy", "0.35em")
.style("font", "12px sans-serif")
.text("Min Temp");
values = stationData.map(function(d){
return {
"hour": parseFloat(d.hour),
"temperature": parseFloat(d.maxtemp)
}
});
temp.append("path")
.attr("id", "maxtemp")
.attr("class", "line")
.attr("d", function(d) {
return line(values);
})
temp.append("text")
.datum(function(d) { return {value: values[values.length - 1]}; })
.attr("transform", function(d) { return "translate(" + x(d.value.hour) + "," + y(d.value.temperature) + ")"; })
.attr("x", 3)
.attr("dy", "0.35em")
.style("font", "12px sans-serif")
.text("Max Temp");
既然您還沒有分享您的代碼,我不確定真正的問題。但是,仍然在d3圖表中看到類似的問題,即多個路徑使用相同的d屬性繪製。確認圖表中沒有這樣的重複路徑。 – Gilsha
謝謝soo!我完全忘記了,當你有多個實例時,它會看起來像這樣。 我有一個selectAll()。輸入(數據)語句的問題! 現在它的工作非常感謝你! – byebb