web-dev-qa-db-ja.com

ChartJS Y軸のタイトルを設定する方法は?

図の表示に Chartjs を使用しており、y軸のタイトルを設定する必要がありますが、ドキュメントにはそれに関する情報がありません。

写真のように、またはy軸の上にy軸を設定する必要があります

私は公式ウェブサイトを見ましたが、それに関する情報はありませんでした

50
emir

Chart.js 2.xについては、andyhasitの答えを参照してください- https://stackoverflow.com/a/36954319/360067

Chart.js 1.xの場合、オプションを微調整し、グラフタイプを拡張してこれを行うことができます。

Chart.types.Line.extend({
    name: "LineAlt",
    draw: function () {
        Chart.types.Line.prototype.draw.apply(this, arguments);

        var ctx = this.chart.ctx;
        ctx.save();
        // text alignment and color
        ctx.textAlign = "center";
        ctx.textBaseline = "bottom";
        ctx.fillStyle = this.options.scaleFontColor;
        // position
        var x = this.scale.xScalePaddingLeft * 0.4;
        var y = this.chart.height / 2;
        // change Origin
        ctx.translate(x, y);
        // rotate text
        ctx.rotate(-90 * Math.PI / 180);
        ctx.fillText(this.datasets[0].label, 0, 0);
        ctx.restore();
    }
});

このように呼ぶ

var ctx = document.getElementById("myChart").getContext("2d");
var myLineChart = new Chart(ctx).LineAlt(data, {
    // make enough space on the right side of the graph
    scaleLabel: "          <%=value%>"
});

ラベル値の前のスペースに注意してください。これにより、Chart.jsの内部の多くをいじることなく、y軸ラベルを書き込むスペースが与えられます。


フィドル- http://jsfiddle.net/wyox23ga/


enter image description here

28
potatopeelings

Chart.jsバージョン2.0では、これが可能です。

options = {
  scales: {
    yAxes: [{
      scaleLabel: {
        display: true,
        labelString: 'probability'
      }
    }]
  }
}

詳細については、 軸ラベル付けドキュメント を参照してください。

158
andyhasit

X軸とy軸の場合:

     options : {
      scales: {
        yAxes: [{
          scaleLabel: {
            display: true,
            labelString: 'probability'
          }
        }],
        xAxes: [{
          scaleLabel: {
            display: true,
            labelString: 'hola'
          }
        }],
      }
    }
18
no.name.added

chart.jsはデフォルトでこれをサポートし、リンクを確認します。 chartjs

options属性でラベルを設定できます。

optionsオブジェクトは次のようになります。

options = {
            scales: {
                yAxes: [
                    {
                        id: 'y-axis-1',
                        display: true,
                        position: 'left',
                        ticks: {
                            callback: function(value, index, values) {
                                return value + "%";
                            }
                        },
                        scaleLabel:{
                            display: true,
                            labelString: 'Average Personal Income',
                            fontColor: "#546372"
                        }
                    }   
                ]
            }
        };
10
Rajiv

私にとっては、このように動作します:

    options : {
      scales: {
        yAxes: [{
          scaleLabel: {
            display: true,
            labelString: 'probability'
          }
        }]
      }
    }
4
no.name.added

要素でtransform:rotate(-90deg)スタイルを使用することを検討してください。 http://www.w3schools.com/cssref/css3_pr_transform.asp を参照してください

例、CSSで

.verticaltext_content {
  position: relative;
  transform: rotate(-90deg);
  right:90px;   //These three positions need adjusting
  bottom:150px; //based on your actual chart size
  width:200px;
}

Y軸のスケールにスペースファッジファクターを追加して、テキストをJavaScriptでレンダリングする余地を確保します。

scaleLabel: "      <%=value%>"

次に、チャートキャンバスの後にあなたのhtmlに次のようなものを入れてください...

<div class="text-center verticaltext_content">Y Axis Label</div>

これは最もエレガントなソリューションではありませんが、htmlとチャートコードの間にいくつかのレイヤーがあるときにうまく機能しました(角度チャートを使用し、ソースコードを変更したくない)。

1
Peter Manger