Bagaimana membuat Teks di dalam bagan donat, saya menggunakan ChartJs .
javascript
chart.js
shashisp
sumber
sumber
Tidak ada jawaban lain yang mengubah ukuran teks berdasarkan jumlah teks dan ukuran donat. Berikut ini skrip kecil yang dapat Anda gunakan untuk secara dinamis menempatkan sejumlah teks di tengah, dan secara otomatis akan mengubah ukurannya.
Contoh: http://jsfiddle.net/kdvuxbtj/
Ini akan membutuhkan teks dalam jumlah berapa pun yang berukuran sempurna untuk donat. Untuk menghindari menyentuh tepi, Anda dapat mengatur bantalan samping sebagai persentase dari diameter bagian dalam lingkaran. Jika Anda tidak mengaturnya, maka defaultnya adalah 20. Anda juga akan memilih warna, font, dan teks. Plugin akan menangani sisanya.
Kode plugin akan dimulai dengan ukuran font dasar 30px. Dari sana itu akan memeriksa lebar teks dan membandingkannya dengan jari-jari lingkaran dan mengubah ukurannya berdasarkan rasio lebar lingkaran / teks.
Ini memiliki ukuran font minimum default 20px. Jika teks melebihi batas pada ukuran font minimum, itu akan membungkus teks. Tinggi garis default saat membungkus teks adalah 25px, tetapi Anda dapat mengubahnya. Jika Anda menyetel ukuran font minimum default ke false, teks akan menjadi sangat kecil dan tidak akan terbungkus.
Ini juga memiliki ukuran font maks default 75px jika tidak ada cukup teks dan hurufnya akan terlalu besar.
Ini adalah kode plugin
Dan Anda menggunakan opsi berikut di objek bagan Anda
Penghargaan untuk @Jenna Sloan atas bantuannya dalam matematika yang digunakan dalam solusi ini.
sumber
Berikut adalah contoh yang dibersihkan dan gabungan dari solusi di atas - responsif (coba ubah ukuran jendela), mendukung penyelarasan otomatis animasi, mendukung tooltips
https://jsfiddle.net/cmyker/u6rr5moq/
UPDATE 17.06.16:
Fungsionalitas yang sama tetapi untuk chart.js versi 2:
https://jsfiddle.net/cmyker/ooxdL2vj/
sumber
Uncaught TypeError: Cannot read property 'extend' of undefined
ide?Saya akan menghindari memodifikasi kode chart.js untuk mencapai ini, karena cukup mudah dengan CSS dan HTML biasa. Inilah solusi saya:
HTML:
CSS:
Outputnya terlihat seperti ini:
sumber
Ini juga bekerja di akhir saya ...
sumber
Berdasarkan jawaban @ rap-2-h, Berikut kode untuk menggunakan teks pada diagram donat di Chart.js untuk digunakan di dashboard seperti. Ini memiliki ukuran font dinamis untuk opsi responsif.
HTML:
Naskah:
Berikut kode contoh. Coba ubah ukuran jendela. http://jsbin.com/wapono/13/edit
sumber
Anda dapat menggunakan css dengan pemosisian relatif / absolut jika ingin responsif. Selain itu, alat ini dapat menangani multi-line dengan mudah.
https://jsfiddle.net/mgyp0jkk/
sumber
Ini didasarkan pada pembaruan Cmyker untuk Chart.js 2. (diposting sebagai jawaban lain karena saya belum bisa berkomentar)
Saya mengalami masalah dengan perataan teks di Chrome saat legenda ditampilkan karena tinggi bagan tidak menyertakan ini sehingga tidak disejajarkan dengan benar di tengah. Memperbaiki ini dengan memperhitungkan ini dalam perhitungan fontSize dan textY.
Saya menghitung persentase di dalam metode daripada nilai yang ditetapkan karena saya memiliki beberapa di halaman ini. Asumsinya adalah bagan Anda hanya memiliki 2 nilai (jika tidak, berapa persentasenya? Dan yang pertama adalah yang ingin Anda perlihatkan persentasenya. Saya juga memiliki banyak bagan lain, jadi saya melakukan pemeriksaan untuk type = donut. Saya hanya menggunakan donat untuk menunjukkan persentase jadi itu berhasil untuk saya.
Warna teks tampaknya sedikit terpukul dan terlewat tergantung pada urutan apa yang dijalankan dll jadi saya mengalami masalah saat mengubah ukuran bahwa teks akan berubah warna (antara hitam dan warna primer dalam satu kasus, dan warna sekunder dan putih di kasus lain) jadi Saya "menyimpan" apa pun gaya isian yang ada, menggambar teks (dengan warna data utama) lalu mengembalikan gaya isian yang lama. (Mempertahankan gaya pengisian lama sepertinya tidak diperlukan tetapi Anda tidak pernah tahu.)
https://jsfiddle.net/g733tj8h/
Tampilkan cuplikan kode
sumber
Anda juga dapat menempelkan kode mayankcpdixit di
onAnimationComplete
opsi:Teks akan ditampilkan setelah animasi
sumber
save
metodeSaya membuat demo dengan 7 jQueryUI Slider dan ChartJs (dengan teks dinamis di dalamnya)
DEMO DI JSFIDDLE
sumber
@ rap-2-h dan @Ztuons Ch jawaban tidak memungkinkan
showTooltips
opsi untuk aktif, tetapi yang dapat Anda lakukan adalah membuat dan melapisi keduacanvas
objek belakang yang menampilkan bagan.Bagian penting adalah gaya yang diperlukan dalam div dan untuk objek kanvas itu sendiri sehingga mereka ditampilkan di atas satu sama lain.
Inilah jsfiddle: https://jsfiddle.net/68vxqyak/1/
sumber
@Cmyker, solusi hebat untuk chart.js v2
Satu peningkatan kecil: Masuk akal untuk memeriksa id kanvas yang sesuai, lihat cuplikan yang dimodifikasi di bawah ini. Jika tidak, teks (yaitu 75%) juga ditampilkan di tengah jenis bagan lain dalam halaman.
Karena sebuah legenda (lihat: http://www.chartjs.org/docs/latest/configuration/legend.html ) memperbesar tinggi bagan, nilai untuk tinggi harus diperoleh dari radius.
sumber
Pertama-tama, pujian dalam memilih Chart.js! Saya menggunakannya di salah satu proyek saya saat ini dan saya sangat menyukainya - ini melakukan pekerjaan dengan sempurna.
Meskipun label / tooltips belum menjadi bagian dari pustaka, Anda mungkin ingin melihat tiga permintaan tarik berikut:
Dan, seperti yang disebutkan Cracker0dks , Chart.js digunakan
canvas
untuk rendering sehingga Anda mungkin juga menerapkan tooltips Anda sendiri dengan berinteraksi dengannya secara langsung.Semoga ini membantu.
sumber
Solusi Alesana bekerja dengan sangat baik untuk saya secara umum, tetapi seperti orang lain, saya ingin dapat menentukan di mana jeda baris terjadi. Saya membuat beberapa modifikasi sederhana untuk membungkus baris pada karakter '\ n', selama teks sudah dibungkus. Solusi yang lebih lengkap akan memaksa pembungkusan jika ada karakter '\ n' dalam teks, tetapi saya tidak punya waktu saat ini untuk membuatnya berfungsi dengan ukuran font. Perubahan juga berpusat sedikit lebih baik secara horizontal saat membungkus (menghindari spasi tambahan). Kode di bawah (saya belum bisa mengirim komentar).
Akan keren jika seseorang memasang plugin ini di GitHub ...
sumber