d3.js - 旋转d3.js饼图中的文字并交替填充颜色
问题描述
我有这个 d3 代码用于在 d3.js 中绘制饼图
/** START OF PIE CHART */
var svgCirWidth = 600, svgCirHeight = 300, radius = Math.min(svgCirWidth, svgCirHeight) / 2;
const pieContainer = d3.select("#pieChart")
.append("svg")
.attr("width", svgCirWidth)
.attr("height", svgCirHeight);
//create group element to hold pie chart
var g = pieContainer.append("g")
.attr("transform", "translate(" + 250 + "," + radius + ")");
var color = d3.scaleOrdinal(d3.schemeCategory10);
var pie = d3.pie().value(function (d) {
return d.total_up_percentage;
});
var path = d3.arc()
.outerRadius(radius)
.innerRadius(0);
var arc = g.selectAll("arc")
.data(pie(data))
.enter() //means keeps looping in the data
.append("g");
arc.append("path")
.attr("d", path)
.attr("fill", function (d) {
return color(d.data.total_up_percentage);
})
.append("text")
.text("afdaf");
var label = d3.arc()
.outerRadius(radius)
.innerRadius(0);
arc.append("text")
.attr("transform", (d) => {
return "translate(" + label.centroid(d) + ")";
})
.attr("text-anchor", "middle")
.text((d) => {
return d.data.region_iso_code + ":" + d.data.total_up_percentage + "%"
});
这是我的馅饼的结果
如您所见,文本相互重叠。我想知道如何旋转文本,以便更容易阅读。我尝试在控制台中编辑转换,但它不起作用,它只会使文本上升或下降。我也想知道我的馅饼的颜色怎么了。它粘在橙色上。它在我读到的文档schemeCategory10
中说这是一个 10 色代码方案。但它不会显示其余的颜色。有没有其他方法可以改变颜色?
解决方案
使用序数比例时,您永远不应该依赖比例从使用中推断域的能力:一个好的做法是始终显式设置域。
通过设置域,您会很快看到这确实是预期的行为:所有橙色切片都具有相同的值,即100
.
如果您想为这些相同的值使用不同的颜色,请改用索引:
.attr("fill", function (_, i) {
return color(i);
})
PS:关于文本,请避免在一个问题中提出2个或更多不同的问题。编辑您的问题,只留下 1 个问题,您可以随时发布其他问题的新问题。
推荐阅读
- macos - 如何在新音乐应用 (MacOS Catalina) 中打开 Apple Music (iTunes) 链接
- javascript - AngularJS 未定义
- netsuite - 使用 SuiteScript 2.0 更新 Netsuite 中的自定义地址字段
- stack - stm32f070rbt6 堆栈指针无效地址问题
- docker - 找不到类“Twig_Function”
- excel - FormulaR1C1 sumIF 删除重复项 + 连接
- ios - Xamarin Native 中具有部分布局问题的 UICollectionView
- java - 通知未显示
- python - Excel 到 Json Python 文件
- excel - 是否可以有一个动态的排序范围?