我在网上搜索如何解决此问题均未成功。我见过人们使用背景图片,但这似乎很懒惰,也无济于事。我想将标签移动到45度角,这样看起来更专业。
我的图表目前看起来像这样-
但是我希望它看起来像这样-
任何人对我该如何做有任何想法?
下面是我的代码副本。
new Chart(DummyChart, {
type: "polarArea",
data: {
labels: ["Dummy1", "Dummy 2", "Dummy 3", "Dummy 4"],
datasets: [
{
data: [125, 375, 300, 240],
backgroundColor: "#57C5C8",
borderWidth: 4,
hoverBorderColor: "white",
label: "Dummy Dummy "
}
]
},
options: {
cutoutPercentage: 20,
legend: {
display: false
},
layout: {
padding: 0
},
scale: {
ticks: {
max: 450,
maxTicksLimit: 1,
display: false
},
angleLines: {
display: true
},
pointLabels: {
display: true
}
},
plugins: {
datalabels: {
display: false
}
}
}
});
答案 0 :(得分:1)
这是我使用datalables插件的解决方案。
https://jsbin.com/bigedugasi/1/edit?html,js,output
我已经更新了以前的解决方案,以使图表具有响应性。
plugins: {
datalabels: {
formatter: function(value, context) {
return context.chart.data.labels[context.dataIndex];
},
anchor: 'start',
align: 'end',
offset: 0 // Gets updated
}
},
onResize: function() {
let width = document.getElementById("pie-chart").width
let padding = myChart.options.layout.padding
myChart.options.plugins.datalabels.offset = width/2-padding
}
答案 1 :(得分:0)
我已经从 HeadhunterKev 更新了源代码,插件标签已删除。
这个想法是使用 startAngle:20 和CSS Transform来旋转图表。
new Chart(document.getElementById("pie-chart"), {
type: "polarArea",
data: {
labels: ["Dummy1", "Dummy 2", "Dummy 3", "Dummy 4"],
datasets: [
{
data: [125, 375, 300, 240],
backgroundColor: "#57C5C8",
borderWidth: 4,
hoverBorderColor: "white",
label: "Dummy Dummy "
}
]
},
options: {
cutoutPercentage: 20,
legend: {
display: false
},
layout: {
padding: 0
},
startAngle: 20,
scale: {
ticks: {
max: 450,
maxTicksLimit: 1,
display: false
},
angleLines: {
display: true
},
pointLabels: {
display: true
}
}
}
});
#pie-chart{
transform: rotate(-25deg);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.bundle.js"></script>
<div>
<canvas id="pie-chart" width="200" height="200"></canvas>
</div>
请运行代码片段以查看结果,请优化旋转值以获得最佳结果。