javascript - 有没有办法将部分标题更改为另一种字体样式或在 Chart.js 中设置自定义标题格式?

标签 javascript chart.js

我正在尝试更改标题中的一个词,使其看起来像这样:

带有斜体单词的示例标题

但目前我唯一能得到的是所有文本都是粗体或所有文本都是斜体。

我需要将科学名称以斜体显示,并以粗体显示整个标题。

Chart.js documentation on titles 不提供设置自定义格式的方法,甚至不提供 fontStyles 数组来设置具有不同样式的不同行,并且使用 html 或 markdown 也不起作用,它只是按原样使用字符串。

我想知道是否有一种方法可以通过回调甚至插件来实现,因为到目前为止我还没有找到任何一种方法。

无效示例:Codepen

options: {
    title: {
        display: true,
        text:
            'Example <i>title<i> for *italic* word',
        fontSize: 18, //Tamaño de letra del titulo
    }
}

最佳答案

要管理标题的样式,您需要使用 fontStyle,在本例中是在您的 options.title 中:

 options: {
     title: {
       display: true,
        text: 'Example <i>title<i> for *italic* word',
        fontSize: 18, //Tamaño de letra del titulo
        fontStyle:"italic"
     },
  }

片段:

<!DOCTYPE html>
<html style="background-color: black;">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.3/dist/Chart.min.js"></script>
        <link
            href="https://fonts.googleapis.com/css?family=Montserrat:400,700&display=swap"
            rel="stylesheet"
        />
    </head>
    <body class="">
        <canvas
            id="myChart"
            width="1904"
            height="400"
            class="chartjs-render-monitor"
            style="display: block; width: 1904px; height: 400px;"
        >
        </canvas>
        <script>
            var ctx = document.getElementById('myChart');

            Chart.defaults.global.defaultFontFamily =
                'Montserrat, "Helvetica Neue", Helvetica, Arial, sans-serif'; //Tipo de letra
            Chart.defaults.global.defaultFontSize = 14; //Tamaño de letra global
            Chart.defaults.global.defaultFontColor = '#fff'; //Color de letra

            var labels_1 = ['Test', 'Test', 'Test', 'Test'];

            var data_1 = [10, 12, 25, 35];

            var colors = [
                'rgba(44,127,184, 1)'
            ];

            var myChart = new Chart(ctx, {
                type: 'horizontalBar',
                data: {
                    labels: labels_1,
                    datasets: [
                        {
                            label: '',
                            data: data_1,
                            backgroundColor: colors[0],
                            borderColor: colors[0],
                            borderWidth: 1,
                            fill: false,
                        },
                    ],
                },
                options: {
                    title: {
                        display: true,
                        text:
                            'title in italic',
                        fontSize: 18, //Tamaño de letra del titulo,
                        fontStyle:"italic"
                    },
                    responsive: true,
                    maintainAspectRatio: false,
                    layout: {
                        padding: {
                            left: 10,
                            right: 10,
                        },
                    },
                    tooltips: {
                        callbacks: {
                            title: function (tooltipItem, data) {
                                var title =
                                    data['labels'][tooltipItem[0]['index']];
                                title = title.toString();
                                title = title.split(',');
                                title = title.join('\n');
                                return title;
                            },
                            label: function (tooltipItem, data) {
                                var value =
                                    data.datasets[0].data[tooltipItem.index];
                                value = value.toString();
                                value = value.split(/(?=(?:...)*$)/);
                                value = value.join(',');
                                return value;
                            },
                        },
                    },
                    scales: {
                        yAxes: [
                            {
                                display: true,
                                ticks: {
                                    beginAtZero: true,
                                },
                                scaleLabel: {
                                    display: false,
                                    labelString: 'No. de focos',
                                },
                            },
                        ],
                        xAxes: [
                            {
                                display: false,
                                ticks: {
                                    beginAtZero: true,
                                },
                                scaleLabel: {
                                    display: false,
                                    labelString: 'País',
                                },
                            },
                        ],
                    },
                    legend: {
                        display: false,
                    },
                },
            });
        </script>
    </body>
</html>

关于javascript - 有没有办法将部分标题更改为另一种字体样式或在 Chart.js 中设置自定义标题格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63063882/

相关文章:

javascript - 服务器正在尝试将 HTML 表内的 Repeater 控件转换为 HtmlTableRow

javascript - 我想在 angularjs 中的选项卡关闭时显示弹出窗口?

javascript - 尝试使用 Nodejs 8 加载 GoogleCloud 数据存储模块时出现 "Provided module can' t 加载错误

javascript - 带偏移量的 Chartjs 折线图数据集

javascript - ChartJS x轴标签显示全部

javascript - Handsontable 无限滚动附加数据并应用合并单元格格式

javascript - 浏览器刷新后 SAPUI5 路由重置

Chart.js 饼图 : How to set background image for segment

javascript - Chartjs 附加组件

Chart.js 饼图 - 如何平滑过渡更新数据集