ডোনাট চার্টের ভিতরে কীভাবে পাঠ্য রেন্ডার করবেন, আমি চার্টজে ব্যবহার করছি ।
উত্তর:
আপনাকে কোডটি এ জাতীয়: সংশোধন করতে হবে chart.Doughnut.defaults
labelFontFamily : "Arial",
labelFontStyle : "normal",
labelFontSize : 24,
labelFontColor : "#666"
এবং তারপরে ফাংশনে drawPieSegments
ctx.fillText(data[0].value + "%", width/2 - 20, width/2, 200);
এই টান দেখুন: https://github.com/nnnick/Chart.js/pull/35
এখানে একটি কার্যকর হ'ল http://jsfiddle.net/mayankcpdixit/6xV78/ একই প্রয়োগ করছে।
অন্য উত্তরগুলির কোনওটিই পাঠ্যের পরিমাণ এবং ডোনাটের আকারের ভিত্তিতে পাঠ্যের আকার পরিবর্তন করে না। এখানে একটি ছোট স্ক্রিপ্ট রয়েছে যা আপনি মধ্যবর্তী স্থানে যেকোন পরিমাণ পাঠ্য গতিশীল রাখতে ব্যবহার করতে পারেন এবং এটি স্বয়ংক্রিয়ভাবে এটির আকার পরিবর্তন করবে।
উদাহরণ: http://jsfiddle.net/kdvuxbtj/
এটি ডোনাটের জন্য নিখুঁত আকারের ডোনাটের কোনও পরিমাণ পাঠ্য লাগবে। প্রান্তগুলি স্পর্শ করা এড়াতে আপনি বৃত্তের অভ্যন্তরের ব্যাসের শতাংশ হিসাবে পার্শ্ব-প্যাডিং সেট করতে পারেন। আপনি যদি সেট না করে থাকেন তবে এটি ডিফল্ট হয়ে যাবে 20। আপনি রঙ, ফন্ট এবং পাঠ্যও বানাবেন। প্লাগইন বাকী যত্ন নেয়।
প্লাগইন কোডটি 30px এর বেস ফন্টের আকার দিয়ে শুরু হবে। সেখান থেকে এটি পাঠ্যের প্রস্থ পরীক্ষা করবে এবং এটি বৃত্তের ব্যাসার্ধের সাথে তুলনা করবে এবং বৃত্ত / পাঠ্য প্রস্থের অনুপাতের ভিত্তিতে এটি পুনরায় আকার দেবে।
এটির ডিফল্ট ন্যূনতম ফন্টের আকার 20px রয়েছে। যদি পাঠ্যটি ন্যূনতম ফন্টের আকারের সীমা অতিক্রম করে, তবে এটি পাঠ্যটি মোড়বে। পাঠ্য মোড়ানোর সময় ডিফল্ট লাইনের উচ্চতা 25px হয় তবে আপনি এটি পরিবর্তন করতে পারেন। আপনি যদি ডিফল্ট ন্যূনতম ফন্টের আকারটিকে মিথ্যাতে সেট করে থাকেন তবে পাঠ্যটি অসীম আকারে ছোট হয়ে যাবে এবং মোড়ানো হবে না।
পর্যাপ্ত পাঠ্য না থাকলে এবং লেটারিংটি খুব বড় হতে পারে এর ক্ষেত্রে এটিতে 75px এর একটি ডিফল্ট সর্বোচ্চ ফন্ট আকারও রয়েছে।
এটি প্লাগইন কোড
Chart.pluginService.register({
beforeDraw: function(chart) {
if (chart.config.options.elements.center) {
// Get ctx from string
var ctx = chart.chart.ctx;
// Get options from the center object in options
var centerConfig = chart.config.options.elements.center;
var fontStyle = centerConfig.fontStyle || 'Arial';
var txt = centerConfig.text;
var color = centerConfig.color || '#000';
var maxFontSize = centerConfig.maxFontSize || 75;
var sidePadding = centerConfig.sidePadding || 20;
var sidePaddingCalculated = (sidePadding / 100) * (chart.innerRadius * 2)
// Start with a base font of 30px
ctx.font = "30px " + fontStyle;
// Get the width of the string and also the width of the element minus 10 to give it 5px side padding
var stringWidth = ctx.measureText(txt).width;
var elementWidth = (chart.innerRadius * 2) - sidePaddingCalculated;
// Find out how much the font can grow in width.
var widthRatio = elementWidth / stringWidth;
var newFontSize = Math.floor(30 * widthRatio);
var elementHeight = (chart.innerRadius * 2);
// Pick a new font size so it will not be larger than the height of label.
var fontSizeToUse = Math.min(newFontSize, elementHeight, maxFontSize);
var minFontSize = centerConfig.minFontSize;
var lineHeight = centerConfig.lineHeight || 25;
var wrapText = false;
if (minFontSize === undefined) {
minFontSize = 20;
}
if (minFontSize && fontSizeToUse < minFontSize) {
fontSizeToUse = minFontSize;
wrapText = true;
}
// Set font settings to draw it correctly.
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
var centerX = ((chart.chartArea.left + chart.chartArea.right) / 2);
var centerY = ((chart.chartArea.top + chart.chartArea.bottom) / 2);
ctx.font = fontSizeToUse + "px " + fontStyle;
ctx.fillStyle = color;
if (!wrapText) {
ctx.fillText(txt, centerX, centerY);
return;
}
var words = txt.split(' ');
var line = '';
var lines = [];
// Break words up into multiple lines if necessary
for (var n = 0; n < words.length; n++) {
var testLine = line + words[n] + ' ';
var metrics = ctx.measureText(testLine);
var testWidth = metrics.width;
if (testWidth > elementWidth && n > 0) {
lines.push(line);
line = words[n] + ' ';
} else {
line = testLine;
}
}
// Move the center up depending on line height and number of lines
centerY -= (lines.length / 2) * lineHeight;
for (var n = 0; n < lines.length; n++) {
ctx.fillText(lines[n], centerX, centerY);
centerY += lineHeight;
}
//Draw text in center
ctx.fillText(line, centerX, centerY);
}
}
});
এবং আপনি আপনার চার্ট অবজেক্টে নিম্নলিখিত বিকল্পগুলি ব্যবহার করেন
options: {
elements: {
center: {
text: 'Red is 2/3 the total numbers',
color: '#FF6384', // Default is #000000
fontStyle: 'Arial', // Default is Arial
sidePadding: 20, // Default is 20 (as a percentage)
minFontSize: 20, // Default is 20 (in px), set to false and text will not wrap.
lineHeight: 25 // Default is 25 (in px), used for when text wraps
}
}
}
এই সমাধানটিতে ব্যবহৃত গণিতের সহায়তার জন্য @ জেনা স্লোয়ানকে ক্রেডিট করুন ।
এখানে পরিষ্কার এবং উপরোক্ত সমাধানগুলির সম্মিলিত উদাহরণ - প্রতিক্রিয়াশীল (উইন্ডোটি পুনরায় আকার দেওয়ার চেষ্টা করুন), অ্যানিমেশনটি স্ব-প্রান্তিককরণ সমর্থন করে, সরঞ্জামদণ্ডকে সমর্থন করে
https://jsfiddle.net/cmyker/u6rr5moq/
Chart.types.Doughnut.extend({
name: "DoughnutTextInside",
showTooltip: function() {
this.chart.ctx.save();
Chart.types.Doughnut.prototype.showTooltip.apply(this, arguments);
this.chart.ctx.restore();
},
draw: function() {
Chart.types.Doughnut.prototype.draw.apply(this, arguments);
var width = this.chart.width,
height = this.chart.height;
var fontSize = (height / 114).toFixed(2);
this.chart.ctx.font = fontSize + "em Verdana";
this.chart.ctx.textBaseline = "middle";
var text = "82%",
textX = Math.round((width - this.chart.ctx.measureText(text).width) / 2),
textY = height / 2;
this.chart.ctx.fillText(text, textX, textY);
}
});
var data = [{
value: 30,
color: "#F7464A"
}, {
value: 50,
color: "#E2EAE9"
}, {
value: 100,
color: "#D4CCC5"
}, {
value: 40,
color: "#949FB1"
}, {
value: 120,
color: "#4D5360"
}];
var DoughnutTextInsideChart = new Chart($('#myChart')[0].getContext('2d')).DoughnutTextInside(data, {
responsive: true
});
<html>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js"></script>
<body>
<canvas id="myChart"></canvas>
</body>
</html>
আপডেট 17.06.16:
একই কার্যকারিতা কিন্তু চার্ট.জেএস সংস্করণ 2 এর জন্য:
https://jsfiddle.net/cmyker/ooxdL2vj/
var data = {
labels: [
"Red",
"Blue",
"Yellow"
],
datasets: [
{
data: [300, 50, 100],
backgroundColor: [
"#FF6384",
"#36A2EB",
"#FFCE56"
],
hoverBackgroundColor: [
"#FF6384",
"#36A2EB",
"#FFCE56"
]
}]
};
Chart.pluginService.register({
beforeDraw: function(chart) {
var width = chart.chart.width,
height = chart.chart.height,
ctx = chart.chart.ctx;
ctx.restore();
var fontSize = (height / 114).toFixed(2);
ctx.font = fontSize + "em sans-serif";
ctx.textBaseline = "middle";
var text = "75%",
textX = Math.round((width - ctx.measureText(text).width) / 2),
textY = height / 2;
ctx.fillText(text, textX, textY);
ctx.save();
}
});
var chart = new Chart(document.getElementById('myChart'), {
type: 'doughnut',
data: data,
options: {
responsive: true,
legend: {
display: false
}
}
});
<script src="//cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.6/Chart.bundle.js"></script>
<canvas id="myChart"></canvas>
Uncaught TypeError: Cannot read property 'extend' of undefined
কোন ধারণা পাচ্ছি ?
আমি এটি সম্পাদন করার জন্য চার্ট.জেএস কোড সংশোধন করা এড়াতে চাই, যেহেতু এটি নিয়মিত সিএসএস এবং এইচটিএমএল দিয়ে বেশ সহজ। এখানে আমার সমাধান:
এইচটিএমএল:
<canvas id="productChart1" width="170"></canvas>
<div class="donut-inner">
<h5>47 / 60 st</h5>
<span>(30 / 25 st)</span>
</div>
সিএসএস:
.donut-inner {
margin-top: -100px;
margin-bottom: 100px;
}
.donut-inner h5 {
margin-bottom: 5px;
margin-top: 0;
}
.donut-inner span {
font-size: 12px;
}
আউটপুটটি এর মতো দেখাচ্ছে:
এটি আমার শেষেও কাজ করছে ...
<div style="width: 100px; height: 100px; float: left; position: relative;">
<div
style="width: 100%; height: 40px; position: absolute; top: 50%; left: 0; margin-top: -20px; line-height:19px; text-align: center; z-index: 999999999999999">
99%<Br />
Total
</div>
<canvas id="chart-area" width="100" height="100" />
</div>
@ র্যাপ -২-এইচ উত্তরের ভিত্তিতে বেস, এখানে ড্যাশবোর্ডে ব্যবহারের জন্য Chart.js এ ডোনট চার্টে পাঠ্য ব্যবহারের কোড। প্রতিক্রিয়াশীল বিকল্পের জন্য এটিতে ডায়নামিক ফন্ট-আকার রয়েছে।
এইচটিএমএল:
<div>text
<canvas id="chart-area" width="300" height="300" style="border:1px solid"/><div>
লিপি:
var doughnutData = [
{
value: 100,
color:"#F7464A",
highlight: "#FF5A5E",
label: "Red"
},
{
value: 50,
color: "#CCCCCC",
highlight: "#5AD3D1",
label: "Green"
}
];
$(document).ready(function(){
var ctx = $('#chart-area').get(0).getContext("2d");
var myDoughnut = new Chart(ctx).Doughnut(doughnutData,{
animation:true,
responsive: true,
showTooltips: false,
percentageInnerCutout : 70,
segmentShowStroke : false,
onAnimationComplete: function() {
var canvasWidthvar = $('#chart-area').width();
var canvasHeight = $('#chart-area').height();
//this constant base on canvasHeight / 2.8em
var constant = 114;
var fontsize = (canvasHeight/constant).toFixed(2);
ctx.font=fontsize +"em Verdana";
ctx.textBaseline="middle";
var total = 0;
$.each(doughnutData,function() {
total += parseInt(this.value,10);
});
var tpercentage = ((doughnutData[0].value/total)*100).toFixed(2)+"%";
var textWidth = ctx.measureText(tpercentage).width;
var txtPosx = Math.round((canvasWidthvar - textWidth)/2);
ctx.fillText(tpercentage, txtPosx, canvasHeight/2);
}
});
});
উইন্ডোটির আকার পরিবর্তন করতে এখানে নমুনা কোড try http://jsbin.com/wapono/13/edit
আপনি যদি এটির প্রতিক্রিয়া চান তবে আপনি আপেক্ষিক / পরম অবস্থানের সাথে সিএসএস ব্যবহার করতে পারেন। এছাড়াও এটি মাল্টি-লাইন সহজেই পরিচালনা করতে পারে।
https://jsfiddle.net/mgyp0jkk/
<div class="relative">
<canvas id="myChart"></canvas>
<div class="absolute-center text-center">
<p>Some text</p>
<p>Some text</p>
</div>
</div>
এটি Chart.js 2 এর জন্য সিমাইকারের আপডেটের ভিত্তিতে তৈরি হয়েছে (আমি এখনও মন্তব্য করতে পারি না বলে অন্য উত্তর হিসাবে পোস্ট করা হয়েছে)
চার্টের উচ্চতা এটিকে অন্তর্ভুক্ত না করে যখন কিংবদন্তি প্রদর্শিত হয় তখন আমি Chrome এ পাঠ্য প্রান্তিককরণ নিয়ে একটি সমস্যা ছিল যাতে এটি মাঝখানে সঠিকভাবে প্রান্তিক না হয়। ফন্টসাইজ এবং টেক্সটওয়াইয়ের গণনায় এটির জন্য অ্যাকাউন্টিং করে এটি ঠিক করা হয়েছে।
পৃষ্ঠাটিতে আমার একাধিক রয়েছে বলে আমি সেটটির মানের চেয়ে পদ্ধতির অভ্যন্তরে শতাংশ নির্ধারণ করেছি। অনুমানগুলি হ'ল আপনার চার্টের কেবলমাত্র 2 টি মান রয়েছে (অন্যথায় শতাংশটি কত? এবং আপনি যে শতাংশটিই প্রদর্শন করতে চান প্রথমটি এটি। আমার কাছে অন্যান্য চার্টও রয়েছে তাই আমি টাইপ = ডোনাটের জন্য একটি চেক করি। আমি কেবল শতাংশ দেখাতে ডোনাট ব্যবহার করছি তাই এটি আমার পক্ষে কাজ করে।
পাঠ্য রঙটি কিছুটা হিট লেগেছে এবং কিসের ক্রমগুলির উপর নির্ভর করে কিছুগুলি মিস হয় তাই আমি লেখার রঙ পরিবর্তন করতে চাইলে একটি সমস্যা নিয়ে এসেছি (এক ক্ষেত্রে কালো এবং প্রাথমিক বর্ণের মধ্যে এবং দ্বিতীয়টিতে দ্বিতীয় রঙ এবং সাদা) তাই বিদ্যমান ফিল স্টাইলটি যা ছিল তা আমি "সংরক্ষণ" করি, পাঠ্যটি আঁকুন (প্রাথমিক ডেটার রঙে) তারপরে পুরানো ফিল স্টাইলটি পুনরুদ্ধার করুন। (পুরানো ফিল স্টাইল সংরক্ষণ করা প্রয়োজন মনে হয় না তবে আপনি কখনই জানেন না))
https://jsfiddle.net/g733tj8h/
Chart.pluginService.register({
beforeDraw: function(chart) {
var width = chart.chart.width,
height = chart.chart.height,
ctx = chart.chart.ctx,
type = chart.config.type;
if (type == 'doughnut')
{
var percent = Math.round((chart.config.data.datasets[0].data[0] * 100) /
(chart.config.data.datasets[0].data[0] +
chart.config.data.datasets[0].data[1]));
var oldFill = ctx.fillStyle;
var fontSize = ((height - chart.chartArea.top) / 100).toFixed(2);
ctx.restore();
ctx.font = fontSize + "em sans-serif";
ctx.textBaseline = "middle"
var text = percent + "%",
textX = Math.round((width - ctx.measureText(text).width) / 2),
textY = (height + chart.chartArea.top) / 2;
ctx.fillStyle = chart.config.data.datasets[0].backgroundColor[0];
ctx.fillText(text, textX, textY);
ctx.fillStyle = oldFill;
ctx.save();
}
}
});
আপনি মায়াঙ্কসিপিডিক্সিট কোডটি বিকল্পে পেস্ট করতে পারেন onAnimationComplete
:
// ...
var myDoughnutChart = new Chart(ctx).Doughnut(data, {
onAnimationComplete: function() {
ctx.fillText(data[0].value + "%", 100 - 20, 100, 200);
}
});
পাঠ্য অ্যানিমেশন পরে প্রদর্শিত হবে
save
পদ্ধতিটি ব্যবহার করে হতে পারে
আমি 7 টি jQueryUI স্লাইডার এবং চার্টজে (ভিতরে গতিশীল পাঠ্য সহ) একটি ডেমো তৈরি করেছি
Chart.types.Doughnut.extend({
name: "DoughnutTextInside",
showTooltip: function() {
this.chart.ctx.save();
Chart.types.Doughnut.prototype.showTooltip.apply(this, arguments);
this.chart.ctx.restore();
},
draw: function() {
Chart.types.Doughnut.prototype.draw.apply(this, arguments);
var width = this.chart.width,
height = this.chart.height;
var fontSize = (height / 140).toFixed(2);
this.chart.ctx.font = fontSize + "em Verdana";
this.chart.ctx.textBaseline = "middle";
var red = $( "#red" ).slider( "value" ),
green = $( "#green" ).slider( "value" ),
blue = $( "#blue" ).slider( "value" ),
yellow = $( "#yellow" ).slider( "value" ),
sienna = $( "#sienna" ).slider( "value" ),
gold = $( "#gold" ).slider( "value" ),
violet = $( "#violet" ).slider( "value" );
var text = (red+green+blue+yellow+sienna+gold+violet) + " minutes";
var textX = Math.round((width - this.chart.ctx.measureText(text).width) / 2);
var textY = height / 2;
this.chart.ctx.fillStyle = '#000000';
this.chart.ctx.fillText(text, textX, textY);
}
});
var ctx = $("#myChart").get(0).getContext("2d");
var myDoughnutChart = new Chart(ctx).DoughnutTextInside(data, {
responsive: false
});
@ র্যাপ -২-এইচ এবং @ জেডুনস সিএফ এর উত্তরটি showTooltips
বিকল্পটি সক্রিয় হওয়ার অনুমতি দেয় না , তবে আপনি যা করতে পারেন তা তৈরি করে দ্বিতীয় স্তর তৈরি করুনcanvas
চার্টটি রেন্ডারিংয়ের পিছনে অবজেক্ট ।
গুরুত্বপূর্ণ অংশটি ডিভগুলিতে এবং ক্যানভাস অবজেক্টের জন্য প্রয়োজনীয় স্টাইলিং যাতে তারা একে অপরের উপরে রেন্ডার করে।
var data = [
{value : 100, color : 'rgba(226,151,093,1)', highlight : 'rgba(226,151,093,0.75)', label : "Sector 1"},
{value : 100, color : 'rgba(214,113,088,1)', highlight : 'rgba(214,113,088,0.75)', label : "Sector 2"},
{value : 100, color : 'rgba(202,097,096,1)', highlight : 'rgba(202,097,096,0.75)', label : "Sector 3"}
]
var options = { showTooltips : true };
var total = 0;
for (i = 0; i < data.length; i++) {
total = total + data[i].value;
}
var chartCtx = $("#canvas").get(0).getContext("2d");
var chart = new Chart(chartCtx).Doughnut(data, options);
var textCtx = $("#text").get(0).getContext("2d");
textCtx.textAlign = "center";
textCtx.textBaseline = "middle";
textCtx.font = "30px sans-serif";
textCtx.fillText(total, 150, 150);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js"></script>
<html>
<body>
<div style="position: relative; width:300px; height:300px;">
<canvas id="text"
style="z-index: 1;
position: absolute;
left: 0px;
top: 0px;"
height="300"
width="300"></canvas>
<canvas id="canvas"
style="z-index: 2;
position: absolute;
left: 0px;
top: 0px;"
height="300"
width="300"></canvas>
</div>
</body>
</html>
এখানে jsfiddle: https://jsfiddle.net/68vxqyak/1/
@ সাইমাইকার, চার্ট.জেএস ভি 2 এর দুর্দান্ত সমাধান
সামান্য বর্ধন: উপযুক্ত ক্যানভাস আইডি চেক করার জন্য এটি বোধগম্য হয়, নীচের পরিবর্তিত স্নিপেটটি দেখুন। অন্যথায় পাঠ্যটি (অর্থাত্ 75%) পৃষ্ঠার মধ্যে অন্যান্য চার্ট প্রকারের মাঝেও রেন্ডার করা হয়।
Chart.pluginService.register({
beforeDraw: function(chart) {
if (chart.canvas.id === 'doghnutChart') {
let width = chart.chart.width,
height = chart.chart.outerRadius * 2,
ctx = chart.chart.ctx;
rewardImg.width = 40;
rewardImg.height = 40;
let imageX = Math.round((width - rewardImg.width) / 2),
imageY = (height - rewardImg.height ) / 2;
ctx.drawImage(rewardImg, imageX, imageY, 40, 40);
ctx.save();
}
}
});
যেহেতু একটি কিংবদন্তি (দেখুন: http://www.chartjs.org/docs/latest/configration/legnd.html ) চার্টের উচ্চতাকে প্রশস্ত করে তাই উচ্চতার মানটি ব্যাসার্ধের দ্বারা প্রাপ্ত হওয়া উচিত।
আলেসানার সমাধানটি আমার পক্ষে সাধারণভাবে খুব সুন্দরভাবে কাজ করে, তবে অন্যদের মতো আমিও লাইন ব্রেক কোথায় ঘটে তা নির্দিষ্ট করতে সক্ষম হতে চেয়েছিলাম। '\ N' অক্ষরগুলিতে লাইন মোড়ানোর জন্য আমি কিছু সাধারণ পরিবর্তন করেছি, যতক্ষণ না লেখাটি ইতিমধ্যে মোড়ানো থাকে। আরও একটি সম্পূর্ণ সমাধান যদি পাঠ্যে কোনও '\ n' অক্ষর থাকে তবে মোড়কে জোর করে, তবে ফন্ট আকারের সাহায্যে সেই কাজটি করার জন্য আমার কাছে এই মুহুর্তের সময় নেই। মোড়ানোর সময় পরিবর্তনটি আরও অনুভূমিকভাবে কেন্দ্র করে ( কোডটি নীচে রয়েছে (আমি এখনও মন্তব্য পোস্ট করতে পারি না)।
যদি কেউ এই প্লাগ-ইনটি গিটহাবের উপরে রাখেন তবে দুর্দান্ত হবে ...
Chart.pluginService.register({
beforeDraw: function(chart) {
if (chart.config.options.elements.center) {
// Get ctx from string
var ctx = chart.chart.ctx;
// Get options from the center object in options
var centerConfig = chart.config.options.elements.center;
var fontStyle = centerConfig.fontStyle || 'Arial';
var txt = centerConfig.text;
var color = centerConfig.color || '#000';
var maxFontSize = centerConfig.maxFontSize || 75;
var sidePadding = centerConfig.sidePadding || 20;
var sidePaddingCalculated = (sidePadding / 100) * (chart.innerRadius * 2)
// Start with a base font of 30px
ctx.font = "30px " + fontStyle;
// Get the width of the string and also the width of the element minus 10 to give it 5px side padding
var stringWidth = ctx.measureText(txt).width;
var elementWidth = (chart.innerRadius * 2) - sidePaddingCalculated;
// Find out how much the font can grow in width.
var widthRatio = elementWidth / stringWidth;
var newFontSize = Math.floor(30 * widthRatio);
var elementHeight = (chart.innerRadius * 2);
// Pick a new font size so it will not be larger than the height of label.
var fontSizeToUse = Math.min(newFontSize, elementHeight, maxFontSize);
var minFontSize = centerConfig.minFontSize;
var lineHeight = centerConfig.lineHeight || 25;
var wrapText = false;
if (minFontSize === undefined) {
minFontSize = 20;
}
if (minFontSize && fontSizeToUse < minFontSize) {
fontSizeToUse = minFontSize;
wrapText = true;
}
// Set font settings to draw it correctly.
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
var centerX = ((chart.chartArea.left + chart.chartArea.right) / 2);
var centerY = ((chart.chartArea.top + chart.chartArea.bottom) / 2);
ctx.font = fontSizeToUse + "px " + fontStyle;
ctx.fillStyle = color;
if (!wrapText) {
ctx.fillText(txt, centerX, centerY);
return;
}
var lines = [];
var chunks = txt.split('\n');
for (var m = 0; m < chunks.length; m++) {
var words = chunks[m].split(' ');
var line;
// Break words up into multiple lines if necessary
for (var n = 0; n < words.length; n++) {
var testLine = (n == 0) ? words[n] : line + ' ' + words[n];
var metrics = ctx.measureText(testLine);
var testWidth = metrics.width;
if (testWidth > elementWidth && n > 0) {
lines.push(line);
line = words[n];
} else {
line = testLine;
}
}
lines.push(line);
}
// Move the center up depending on line height and number of lines
centerY -= ((lines.length-1) / 2) * lineHeight;
// All but last line
for (var n = 0; n < lines.length; n++) {
ctx.fillText(lines[n], centerX, centerY);
centerY += lineHeight;
}
}
}
});
সবার আগে, Chart.js বেছে নেওয়ার জন্য কুডোস! আমি এটি আমার বর্তমান প্রকল্পগুলির একটিতে ব্যবহার করছি এবং আমি একেবারে পছন্দ করি - এটি পুরোপুরিভাবে কাজ করে।
যদিও লেবেল / সরঞ্জামদণ্ডগুলি এখনও গ্রন্থাগারের অংশ নয়, আপনি এই তিনটি পুল অনুরোধগুলি একবার দেখে নিতে পারেন:
এবং, যেমন ক্র্যাকার0ডক্স উল্লেখ করেছেন, Chart.js canvas
রেন্ডারিংয়ের জন্য ব্যবহার করে যাতে আপনি কেবল নিজের সাথে নিজের সাথে সরাসরি আলাপচারিতার মাধ্যমে সরঞ্জামের সরঞ্জাম প্রয়োগ করতে পারেন।
আশাকরি এটা সাহায্য করবে.