防止y轴标签被切断

Igo*_*yuk 6 javascript chart.js

我的图表 y 标签被切断,尝试在 stackoverflow 上找到的不同解决方案(例如在标签中添加空格或设置布局填充)并没有解决问题。

\n

代码

\n

\r\n
\r\n
const optionsTotali = {\n  maintainAspectRatio: false,\n  responsive: true,\n  plugins: {\n    legend: {\n      display: false\n    },\n    tooltip: {\n      displayColors: false,\n      mode: "index",\n      intersect: 0,\n      callbacks: {\n        label: function(context) {\n          return "\xe2\x82\xac" + context.parsed.y.toFixed(2).replace(/\\d(?=(\\d{3})+\\.)/g, \'$&,\').replace(/[,.]/g, m => (m === \',\' ? \'.\' : \',\'));\n        }\n      }\n    },\n  },\n  scales: {\n    y: {\n      grid: {\n        display: false\n      },\n      ticks: {\n        min: 0,\n        beginAtZero: true,\n        sampleSize: 1,\n        callback: function(value, index, values) {\n          return "\xe2\x82\xac" + value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ".");\n        }\n      }\n    }\n  }\n};\n\nconst ctx = document.getElementById("chartTotali").getContext(\'2d\');\nconst chartTotali = new Chart(ctx, {\n  type: \'line\',\n  data: {\n    labels: [\n      "08:00",\n      "09:00",\n      "10:00",\n      "11:00",\n      "12:00",\n      "13:00",\n      "14:00",\n      "15:00",\n      "16:00",\n      "17:00",\n      "18:00",\n      "19:00",\n      "20:00"\n    ],\n    datasets: [{\n      label: "Totale \xe2\x82\xac",\n      fill: true,\n      backgroundColor: \'#0084ff\',\n      borderColor: \'#0084ff\',\n      borderWidth: 2,\n      pointBackgroundColor: \'#0084ff\',\n      data: [\n        "17089.36",\n        "394279.52",\n        "514863.02",\n        "540198.74",\n        "379222.06",\n        "8793.42",\n        "79.58",\n        "116379.41",\n        "444580.43",\n        "506663.36",\n        "457947.28",\n        "138158.94",\n        "398.46"\n      ],\n    }]\n  },\n  options: optionsTotali\n});
Run Code Online (Sandbox Code Playgroud)\r\n
.card-chart {\n  overflow: hidden;\n}\n\n.card {\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 0.0625rem solid rgba(34, 42, 66, .05);\n  border-radius: 0.2857rem;\n}\n\n.card {\n  background: #27293d;\n  border: 0;\n  position: relative;\n  width: 100%;\n  margin-bottom: 30px;\n  box-shadow: 0 1px 20px 0 rgb(0 0 0 / 10%);\n}\n\n.card .card-body {\n  padding: 15px 15px 15px 15px;\n}\n\n.card-body {\n  flex: 1 1 auto;\n  padding: 1.5rem;\n}\n\n.card-chart .chart-area {\n  height: 220px;\n  width: calc(100% + 30px);\n}
Run Code Online (Sandbox Code Playgroud)\r\n
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">\n<script src="https://cdn.jsdelivr.net/npm/chart.js@3.7.0/dist/chart.min.js"></script>\n<div class="card card-chart">\n  <div class="card-header">\n    <div class="row">\n      <div class="col-sm-6 text-left">\n        <h5 class="card-category">Totale vendite</h5>\n        <h2 class="card-title">Totali</h2>\n      </div>\n    </div>\n  </div>\n  <div class="card-body">\n    <div class="chart-area">\n      <canvas id="chartTotali" width="1563" height="220" style="display: block; box-sizing: border-box; height: 220px; width: 1563px;"></canvas>\n    </div>\n  </div>\n</div>
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n

Lee*_*lee 2

y 轴配置中的属性sampleSize是罪魁祸首,因为您将其放入其中1仅查看第一个刻度以了解它可以使用的长度。但数组中的其他数据要大得多,因此无法容纳。删除此属性或将其设置为更大的数字,以便采样更多刻度将解决您的行为(删除将给出最一致的结果)。

\n

\r\n
\r\n
const optionsTotali = {\n  maintainAspectRatio: false,\n  responsive: true,\n  plugins: {\n    legend: {\n      display: false\n    },\n    tooltip: {\n      displayColors: false,\n      mode: "index",\n      intersect: 0,\n      callbacks: {\n        label: function(context) {\n          return "\xe2\x82\xac" + context.parsed.y.toFixed(2).replace(/\\d(?=(\\d{3})+\\.)/g, \'$&,\').replace(/[,.]/g, m => (m === \',\' ? \'.\' : \',\'));\n        }\n      }\n    },\n  },\n  scales: {\n    y: {\n      grid: {\n        display: false\n      },\n      ticks: {\n        min: 0,\n        beginAtZero: true,\n        callback: function(value, index, values) {\n          return "\xe2\x82\xac" + value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ".");\n        }\n      }\n    }\n  }\n};\n\nconst ctx = document.getElementById("chartTotali").getContext(\'2d\');\nconst chartTotali = new Chart(ctx, {\n  type: \'line\',\n  data: {\n    labels: [\n      "08:00",\n      "09:00",\n      "10:00",\n      "11:00",\n      "12:00",\n      "13:00",\n      "14:00",\n      "15:00",\n      "16:00",\n      "17:00",\n      "18:00",\n      "19:00",\n      "20:00"\n    ],\n    datasets: [{\n      label: "Totale \xe2\x82\xac",\n      fill: true,\n      backgroundColor: \'#0084ff\',\n      borderColor: \'#0084ff\',\n      borderWidth: 2,\n      pointBackgroundColor: \'#0084ff\',\n      data: [\n        "17089.36",\n        "394279.52",\n        "514863.02",\n        "540198.74",\n        "379222.06",\n        "8793.42",\n        "79.58",\n        "116379.41",\n        "444580.43",\n        "506663.36",\n        "457947.28",\n        "138158.94",\n        "398.46"\n      ],\n    }]\n  },\n  options: optionsTotali\n});
Run Code Online (Sandbox Code Playgroud)\r\n
.card-chart {\n  overflow: hidden;\n}\n\n.card {\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 0.0625rem solid rgba(34, 42, 66, .05);\n  border-radius: 0.2857rem;\n}\n\n.card {\n  background: #27293d;\n  border: 0;\n  position: relative;\n  width: 100%;\n  margin-bottom: 30px;\n  box-shadow: 0 1px 20px 0 rgb(0 0 0 / 10%);\n}\n\n.card .card-body {\n  padding: 15px 15px 15px 15px;\n}\n\n.card-body {\n  flex: 1 1 auto;\n  padding: 1.5rem;\n}\n\n.card-chart .chart-area {\n  height: 220px;\n  width: calc(100% + 30px);\n}
Run Code Online (Sandbox Code Playgroud)\r\n
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">\n<script src="https://cdn.jsdelivr.net/npm/chart.js@3.7.0/dist/chart.min.js"></script>\n<div class="card card-chart">\n  <div class="card-header">\n    <div class="row">\n      <div class="col-sm-6 text-left">\n        <h5 class="card-category">Totale vendite</h5>\n        <h2 class="card-title">Totali</h2>\n      </div>\n    </div>\n  </div>\n  <div class="card-body">\n    <div class="chart-area">\n      <canvas id="chartTotali" width="1563" height="220" style="display: block; box-sizing: border-box; height: 220px; width: 1563px;"></canvas>\n    </div>\n  </div>\n</div>
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n