ใน Chart.js มีวิธีเขียนป้ายกำกับภายในแถบแนวนอนในแผนภูมิ "horizontalBar"
หรือไม่ เช่นเดียวกับ:
มีอะไรที่คล้ายกับสิ่งนี้เป็นไปได้ใน Chart.js หรือไม่
ขอบคุณ!
ใน Chart.js มีวิธีเขียนป้ายกำกับภายในแถบแนวนอนในแผนภูมิ "horizontalBar"
หรือไม่ เช่นเดียวกับ:
มีอะไรที่คล้ายกับสิ่งนี้เป็นไปได้ใน Chart.js หรือไม่
ขอบคุณ!
ขณะนี้มีตัวเลือก "กระจก" เพื่อให้ป้ายกำกับปรากฏภายในแถบ
ตัวอย่างการกำหนดค่า "ตัวเลือก" สำหรับแผนภูมิแท่งแนวนอน :
options: {
scales: {
yAxes: [{ticks: {mirror: true}}]
}
}
เอกสาร : http://www.chartjs.org/docs/latest/axes/cartesian/#common-configuration
โดยการอ้างอิงถึง โซลูชันดั้งเดิมในการแสดงค่าข้อมูลโดยใช้ วิธี HTML5 Canvas fillText()
ใน animation
's onComplete
โค้ดด้านล่างนี้จะให้สิ่งที่คุณต้องการ:
กุญแจสำคัญในการแสดงข้อมูลที่เกี่ยวข้องกับแผนภูมิแบบกำหนดเองคือการตรวจสอบชุดข้อมูลของแผนภูมิดังใน this.data.datasets
ด้านล่าง ฉันทำสิ่งนี้โดยตรวจสอบว่าค่าต่างๆ อยู่ที่ใดในชุดข้อมูลนี้ รวมถึงตำแหน่งที่จะวางไว้สำหรับเมธอด fillText
การตรวจสอบชุดข้อมูลของแผนภูมิ: รูปภาพ
สคริปต์ (Chart.js 2.0 ขึ้นไป):
var barOptions = {
events: false,
showTooltips: false,
legend: {
display: false
},
scales:{
yAxes: [{
display: false
}]
},
animation: {
onComplete: function () {
var ctx = this.chart.ctx;
ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontFamily, 'normal', Chart.defaults.global.defaultFontFamily);
ctx.textAlign = 'left';
ctx.textBaseline = 'bottom';
this.data.datasets.forEach(function (dataset) {
for (var i = 0; i < dataset.data.length; i++) {
var model = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._model,
left = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._xScale.left;
ctx.fillStyle = '#444'; // label color
var label = model.label;
ctx.fillText(label, left + 15, model.y + 8);
}
});
}
}
};
jsFiddle: http://jsfiddle.net/jfvy12h9/
hover: { animationDuration: 1 }
จะปิดใช้งานภาพเคลื่อนไหวของคำแนะนำเครื่องมือ แต่แก้ปัญหาการกะพริบ/เปิด/ปิด...
- person benzkji; 25.04.2019
คุณสามารถบรรลุเอฟเฟกต์นี้ได้ใน Chartjs 2.0 + โดยการหมุนป้ายกำกับ 90 องศา และใช้ช่องว่างภายในที่เป็นลบ เพื่อให้ป้ายกำกับเลื่อนขึ้นภายใน 'แถบ' บางสิ่งเช่นนี้:
new Chart(document.getElementById(id), {
type: 'bar',
data: data,
options: {
scales: {
xAxes: [
{
ticks: {
autoSkip: false,
maxRotation: 90,
minRotation: 90,
padding: -110
}
}
]
}
}
});
ดูกาเครื่องหมายเอกสารประกอบการกำหนดค่าสำหรับข้อมูลเพิ่มเติม
ดูเหมือนว่าไม่มีทางเลือกโดยตรงสำหรับเรื่องนี้ในขณะนี้ การใช้งานที่เป็นไปได้คือการวนซ้ำบนแท่ง/คอลัมน์โดยใช้ตะขอ onAnimationComplete คุณสามารถดูคำถามนี้เพื่อดูคำอธิบายโดยละเอียด วิธีแสดงค่าข้อมูลบนแผนภูมิ เจส
ฉันอยากให้คุณเตือนว่าสิ่งนี้มีข้อเสียเปรียบ เนื่องจากใช้ onAnimationComplete เมื่อใดก็ตามที่ภาพเคลื่อนไหวเกิดขึ้นบนแผนภูมิ ค่าต่างๆ จะหายไปชั่ววินาทีและปรากฏขึ้นอีกครั้ง
เนื่องจากบนแผนภูมิ "แท่ง" ใช้งานตัวเลือก "มิเรอร์" ไม่ได้...
ฉันพบวิธีแก้ปัญหาชั่วคราวแล้ว: Fiddle link
ฉันใช้แผนภูมิ js เวอร์ชัน 2.8.0 ที่แก้ไขในลิงก์นี้
<html>
<body>
<canvas id="myChart" width="800" height="600">
</canvas>
</body>
</html>
var ctx = document.getElementById("myChart").getContext("2d");
var myChart = new Chart(ctx, {
type: "bar",
data: {
labels: ["ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT"],
datasets: [{
label: "Quota Eni mensile",
backgroundColor: [
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)"
],
borderColor: [
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)",
"rgba(255, 255, 153, 1)"
],
borderWidth: 1,
data: [10, 11, 18, 10, 13, 28, 12, 16]
}
]
},
options: {
legend: {
display: false
},
scales: {
xAxes: [{
ticks:{
maxRotation: 90,
minRotation: 90,
display: "top"
},
}],
yAxes: [{
display: false
}]
},
tooltips: {
enabled: true
},
maintainAspectRatio: true,
responsive: true
}
});
Chart.plugins.register({
/* Adjust axis labelling font size according to chart size */
id: "responsiveXlabels",
beforeDraw: function(c) {
var chartHeight = c.chart.height;
var size = (chartHeight * 2.5) / 100;
var xAxis = c.scales["x-axis-0"];
xAxis.options.ticks.minor.fontSize = size;
xAxis.height = 10;
xAxis.minSize.height = 10;
c.options.scales.xAxes[0].ticks.padding = -size * 4.5;
xAxis.margins.bottom = size * 12.5;
},
afterDraw: function(c) {
c.options.scales.xAxes[0].ticks.padding = -158;
}
});
ปลั๊กอิน responsiveXlabel ใช้เพื่อแปลงข้อความเมื่อปรับขนาด มีเพียงสิ่งเดียวที่ยังต้องแก้ไข: จัดแนวข้อความที่ด้านล่างของแกน
หวังว่านี่จะช่วยผู้ที่ต้องการใช้งานการมิเรอร์บนแกน X และตอบสนองคำขอที่ตอบสนอง