Jquery plugins Tickformatter在最新版本的Flot中未按预期执行

Jquery plugins Tickformatter在最新版本的Flot中未按预期执行,jquery-plugins,Jquery Plugins,在我们以前版本的Flot中,下面的tickformatter函数运行良好。它显示该值并正确使用该类 yaxis: { tickFormatter: function(v, axis) { return "<span class='axisLabel'>" + v + "%</span>"; } yaxis:{ tickFormatter:函数(v,轴){ 返回“+v+”%”; } 在最新版本(v.0.7)中,它按字面意思呈现标记,因

在我们以前版本的Flot中,下面的tickformatter函数运行良好。它显示该值并正确使用该类

yaxis: {
     tickFormatter: function(v, axis) {
        return "<span class='axisLabel'>" + v + "%</span>";
     }
yaxis:{
tickFormatter:函数(v,轴){
返回“+v+”%”;
}
在最新版本(v.0.7)中,它按字面意思呈现标记,因此在图形旁边我看到一个类似
50%
y轴刻度标签应该在哪里。我应该只看到一个百分比列表

我已经做了尽可能多的调试,但还没有找到导致这种情况的原因。如果有任何想法,我将不胜感激。

函数格式化程序(val,axis){
function formatter(val, axis) {
    return "<span style='font-weight: bold'>" +  val / 1000000 + "m</span>"; 
}

var usersData = { color: "#00FF55", data: [[1, 900000], [2, 926000], [3, 959000], [4, 1056000], [5, 1242300]] };

$(document).ready(function() {
    $.plot($("#UserGraph"), [usersData], { xaxis: { ticks: [] }, yaxis: { tickFormatter: formatter } });
});
返回“+val/1000000+m”; } var usersData={color:#00FF55],数据:[[190000],[2926000],[39599000],[41056000],[51242300]}; $(文档).ready(函数(){ $.plot($(“#UserGraph”),[usersData],{xaxis:{ticks:[]},yaxis:{tickFormatter:formatter}}); });

我可以删除样式,然后数字恢复为正常的非粗体数字。

我认为这是由于最近标签处理方式的“改进”。在开发版本的README.md中:

轴标签现在使用画布文本绘制,并对其进行一些解析 支持换行。这解决了各种问题,但也意味着 不再支持HTML标记,可以作为DOM元素或 直接使用CSS设置样式

更具体地说,似乎

function insertAxisLabels() {...}
被替换为

function drawAxisLabels(){...}
在某些情况下。前者用于将轴标签作为一组
元素放置,如下所示:

<div class="tickLabels" style="font-size:smaller">
  <div class="xAxis x1Axis" style="color:#545454">
    <div class="tickLabel" style="position:absolute;text-align:center;left:-14px;top:284px;width:75px"><em>0</em></div>
    [... div elements for other labels...]  
  </div>
</div>
因此,html格式标记不再有效。以前简单的事情,如设置记号标签的样式或将其转换为链接,现在变得不那么简单了。也许flot开发人员可以了解在新版本中实现相同功能的最佳方法


我主要在条形图上使用flot。一个(难看的)解决方法似乎对我有效,就是用稳定版本的insertAxisLabels函数(重命名为drawAxisLabels后)替换最新jquery.flot.js中的整个drawAxisLabels函数。此外,我还必须在绘图的xaxis选项中手动设置labelWidth,因为否则绘图的宽度计算不正确。

回答得很好!如果轴标签重叠,这也是#1解决方案。请注意,画布文本在0.8的最终版本中是可选的;HTML文本仍然是默认值。
yaxis: {
     tickFormatter: function(v, axis) {
        return "<span class='axisLabel'>" + v + "%</span>";
     }