jqPlot使用canvastickrenderer手动定义的刻度标签

时间:2016-04-02 08:13:54

标签: javascript jqplot

我需要手动定义x轴上的刻度标签。 只要我使用CategoryAxisRenderer,它就可以正常工作,但我想使用tickRenderer: $.jqplot.CanvasAxisTickRenderer来旋转标签。 现在,x轴自动从0到xx标记为单步。

我需要做什么,使用手动定义的数组?

带有旋转标签的完整代码如下所示:

`$(document).ready(function () {
    var data_array = <?php echo json_encode($data) ?>;
    var s1 = new Array;
    var s2 =  new Array;
    var ticks = new Array();

      $.each(data_array, function (j, elem) {
            $.each(elem, function (i, elem) {
            s1[i] = parseInt(elem['up']);
            s2[i] = parseInt(elem['down']);
            ticks[i] = parseInt(elem['minute']);
            if(ticks[i]%5!=0){
                ticks[i]='';
            }
            });
   $.jqplot(elem['name'], [s1,s2],{
       title:elem['name'],
        stackSeries: true, 
    seriesColors:['#33CC00','#FF3300'],         
        seriesDefaults:{
            renderer:$.jqplot.BarRenderer,
             rendererOptions: {
                 fillToZero: true,
                varyBarColor: true
              }
        },
        axes: {
            yaxis: {  pad: 1.05},
            xaxis: {
                renderer: $.jqplot.CategoryAxisRenderer,
                ticks: ticks,
                showLabel: true,
                tickOptions: {
                     angle: 30,
                     labelPosition:'start',
                 },
            }
        },
        axesDefaults: {
              tickRenderer: $.jqplot.CanvasAxisTickRenderer,
        }
       }//end jqplot
   );
    });
 });`

目前,ticks数组中只填充了数字,但稍后会保留一些文本标签。 当我注释掉tickRenderer: $.jqplot.CanvasAxisTickRenderer时,我的ticks数组显示为x轴标签。

我尝试了几个选项,但找不到解决方案。

任何人都可以帮我吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题。 我不确定原因,但提供#include <vector> #include <algorithm> using namespace std; vector<float> amplitudeStorage; vector< vector<float> > vectorStorage; void AssignWaveAmplitude(float& amplitudeVariable, const vector<float>& dataVectorr) { if( dataVectorr.size() ) { amplitudeVariable = 0; return; } amplitudeVariable = (*max_element(dataVectorr.begin(), dataVectorr.end())) - (*min_element(dataVectorr.begin(), dataVectorr.end())); } main(){ for (int i = 0; i < amplitudeStorage.size(); i++) { AssignWaveAmplitude(amplitudeStorage[i], vectorStorage[i]); } } 而不是ticks[i]=' '这样的空格字符可以解决它。