gpt4 book ai didi

javascript - 使用tickformat在绘图中格式化轴刻度中的文本

转载 作者:行者123 更新时间:2023-12-01 03:04:16 26 4
gpt4 key购买 nike

是否可以使用tickformat为x轴和y轴刻度添加格式?

这个想法是将轴的长名称剪裁为:

axiswithaverylongname --> axisw...

在plotly api引用中有一个格式化日期的示例 https://plot.ly/javascript/reference/#layout-xaxis-tickformat

他们还引用了 d3 文档 https://github.com/d3/d3-format/blob/master/README.md

来自 plotly 引用:

tickformat (string) 
default: ""
Sets the tick label formatting rule using d3 formatting mini-languages
which are very similar to those in Python. For numbers, see:
https://github.com/d3/d3-format/blob/master/README.md#locale_format
And for dates see: https://github.com/d3/d3-time-
format/blob/master/README.md#locale_format We add one item to d3's
date formatter: "%{n}f" for fractional seconds with n digits. For
example, "2016-10-13 09:15:23.456" with tickformat "%H~%M~%S.%2f"
would display "09~15~23.46"

最佳答案

据我所知,无法直接通过 tickformat 执行此操作,但几行 JavaScript 代码即可为您解决此问题。

Plotly.d3.selectAll(".xtick text").each(function(d, i) {
Plotly.d3.select(this).html(Plotly.d3.select(this).html().substr(0, 5));
});

使用 d3 的 seleectAll 获取 x 轴上的所有 text 标签,并使用初始标签的前 5 个字母更新文本。

您可以自动执行此操作,也可以在按下下例中的按钮时执行此操作。

var trace1 = {
x: ["A", "B1", "axiswithaverylongname", "Wow, wait a second, that's way tooooo long"],
y: [1, 2, 3, 4],
type: "bar"
};

var myPlot = document.getElementById('myPlot')
Plotly.newPlot('myPlot', [trace1]);
document.getElementById("cleanButton").addEventListener("click", function(){
Plotly.d3.selectAll(".xtick text").each(function(d, i) {
if (Plotly.d3.select(this).html().length > 8) {
Plotly.d3.select(this).html(Plotly.d3.select(this).html().substr(0, 5) + '...');
}
});
});
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<div id="myPlot" style="width:100%;height:100%"></div>
<button id="cleanButton">Clean x-axis</button>

关于javascript - 使用tickformat在绘图中格式化轴刻度中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46302109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com