如何使Jqplot条形图点标签垂直对齐。?

时间:2012-12-10 05:43:54

标签: jquery jqplot

我正在制作一个我需要帮助的图表。 (我已经搜索了这么多,但不能成功,为什么要问。 - 如果可能重复,我道歉。)enter image description here

我的代码:

var plot2 = $.jqplot('distance_graph', data.distance, {
                // The "seriesDefaults" option is an options object that will
                // be applied to all series in the chart.
                seriesDefaults:{
                    renderer:$.jqplot.BarRenderer,
                    rendererOptions: {fillToZero: false},
                    pointLabels: { show: true },
                },
                // Custom labels for the series are specified with the "label"
                // option on the series option.  Here a series option object
                // is specified for each series.

                // Show the legend and put it outside the grid, but inside the
                // plot container, shrinking the grid to accomodate the legend.
                // A value of "outside" would not shrink the grid and allow
                // the legend to overflow the container.
                legend: {
                    show: true,
                    placement: 'outsideGrid'
                },
                axes: {
                    // Use a category axis on the x axis and use our custom ticks.
                    xaxis: {
                        renderer: $.jqplot.CategoryAxisRenderer,
                        label: 'Date',
                        ticks: ticks,
                        labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
                        tickRenderer: $.jqplot.CanvasAxisTickRenderer,
                        tickOptions: {
                            angle: -30
                        }
                    },
                    // Pad the y axis just a little so bars can get close to, but
                    // not touch, the grid boundaries.  1.2 is the default padding.
                    yaxis: {
                        label: 'Distance Travelled',
                        pad: 1.05,
                        labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
                        tickRenderer: $.jqplot.CanvasAxisTickRenderer,
                        tickOptions: {
                          labelPosition:'middle'
                        },
                        min:min_val,
                        max:max_val     
                    }
                }
            });
        plot2.legend.labels = data.device;
        plot2.replot( { resetAxes: false } );

以及如何删除0值,因为我将此图表转换为多个Item的图表。这是目前One Item的图表..那么如何删除0标签......

1 个答案:

答案 0 :(得分:3)

根据以下示例:point-labels,您可以使用CSS中的.jqplot-point-label类修改点标签的显示。因此,您可以使用CSS transform属性旋转文本,如下所述:how-to-draw-vertical-text-with-css-cross-browser

要删除0值的标签,您需要提供一组标签,其中零更改为空字符串。您可以像这样使用此自定义集:

pointLabels: {
    show: true,
    labels: customSetOfLabels
},

这里是a working demo - 然而,看起来jqPlot会阻止来自jsfiddle的请求,因此有时脚本不会加载。您可以在本地尝试,也可以在一个浏览器窗口中访问jqPlot demo page和jsfiddle,以便从缓存中加载脚本。

我使用JavaScript数组map()函数来创建自定义标签集,如下所示:

function removeZeros(x){
    return x===0 ? '' : x;
}
var line1 = [14, 32, 41, 44, 0, 40];
var line1Labels = line1.map(removeZeros);

请注意,map()可能无法在所有浏览器中使用,因此您可能希望使用for循环遍历数组。