幅と高さの設定


88

ドキュメントに記載されているChart.jsのサンプルコードを試しています。

幅と高さは、キャンバス要素で400px / 400pxでインラインで指定されます。

ただし、グラフをレンダリングすると、ページ幅全体に拡大され、右端が切り取られます。

例を見る

チャートの幅/高さをどのように/どこで制御する必要がありますか?

This is some bogus text because SO prohibits linking to Codepen otherwise.

回答:


94

キャンバススタイルの幅を上書きできます!重要...

canvas{

  width:1000px !important;
  height:600px !important;

}

また

responsive:true,オプションでプロパティを指定します。

options: {
    responsive: true,
    maintainAspectRatio: false,
    scales: {
        yAxes: [{
            ticks: {
                beginAtZero:true
            }
        }]
    }
}

追加されたオプションの下で更新: maintainAspectRatio: false,

リンク:http//codepen.io/theConstructor/pen/KMpqvo


13
ありがとうございますmaintainAspectRatio: false。チャートが表示可能になりました。しかし、それでも右側を切り落としています。すでに独自の基本的なサンプルコードでこの種の問題にぶつかると、chart.jsが良い賭けであるかどうか疑問に思います。(右側はまだ切断されています...)
フェローストレンジャー2016年

それはグラフサイズの問題を解決します、グラフはそれに合うようにスケーリングされていません。Chart.js内からグラフサイズを設定する方法はありますか?
firix 2017年

7
グラフが指定されたサイズに従うようにするには、レスポンシブをオフにする必要があることがわかりました。それを制御し、応答性を維持する方法がないように思われるのは残念です...
Firix 2017年

2
ありがとうございました。あなたはmaintainAspectRatio本当に私を助けてくれます。
ArsmanAhmad18年

「!important」を使用することは、それが機能していても、これを解決する正しい方法ではありません。以下の@Nicolasソリューションは、キャンバスのサイズ変更を希望どおりに制御できるため、より適切な方法です。
AbhishekBoorugu20年

54

チャートをコンテナで囲むこともできます(公式ドキュメントhttp://www.chartjs.org/docs/latest/general/responsive.html#important-noteによる)

<div class="chart-container">
    <canvas id="myCanvas"></canvas>
</div>

CSS

.chart-container {
    width: 1000px;
    height:600px
}

とオプション付き

responsive:true
maintainAspectRatio: false

1
これは機能します。ここで重要なのは、外側のdivを使用し、canvas要素ではなくその上に幅と高さを設定することです。
ジョンドハティ

これが機能するためには、チャートコンテナを比較的配置する必要があります。
サンジュ

私のためだけで作品!importantアンギュラプロジェクトに
АртурГудиев

23

私の場合、responsive: falseオプションの下を渡すことで問題が解決しました。特にtrueがデフォルトであるため、なぜ誰もが反対のことをするように言っているのかわかりません。


1
こっちも一緒。設定responsive: trueすると、チャートの外観が完全に歪んでしまいました。
ポール

私のためだけで動作します!important私の角度のプロジェクトで
АртурГудиев

4

私にも効く

responsive:true
maintainAspectRatio: false


<div class="row">
        <div class="col-xs-12">
            <canvas id="mycanvas" width="500" height="300"></canvas>
        </div>
    </div>

ありがとうございました


2

相対的な親要素の使用について誰も話していなかったとは信じられません。

コード:

<div class="chart-container" style="position: relative; height:40vh; width:80vw">
  <canvas id="chart"></canvas>
</div>

出典:公式ドキュメント


0

上記ではありませんが、canvas要素を使用max-widthまたは使用することmax-heightも可能です。


0

以下は私のために働いた-しかしこれを「オプション」パラメータに入れることを忘れないでください。

var myChart = new Chart(ctx, {
type: 'line',
data: data,
options: {
    maintainAspectRatio: false,
    responsive:true,
    scales: {
        yAxes: [{
            ticks: {
                beginAtZero: true
            }
        }]
    }
}
});

0

これは私の場合に役立ちました:

options: {
    responsive: true,
    scales: {
        yAxes: [{
            display: true,
            ticks: {
                min:0,
                max:100
            }
        }]
    }
}

0

aspectRatio必要に応じて変更できます。

options:{
     aspectRatio:4 //(width/height)
}

これがどのように機能するかを明確にできますか?4アスペクト比ではありません。あなたのコメントは言って(width/height)いますが、それをどのように適用すべきかは明確ではありません。それをセットで渡す方法はありますか?または、文字通り、提案された幅を提案された高さで割って、たとえば3:4になるようにすることを意味し0.75ますか?
JeremyCaney20年

-3

これを使用して、正常に動作します。

<canvas id="totalschart" style="height:400px;width: content-box;"></canvas>

以下options

responsive:true,
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.