2

我正在制作一个几乎不需要帮助的图表。(我已经用谷歌搜索了很多但无法成功,这就是为什么要问。 - 如果可能重复我道歉。)在此处输入图像描述

我的代码:

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 值,因为我正在将此图表转换为多个项目的图表。这目前是一个项目的图表.. 那么如何删除 0 个标签也......

4

1 回答 1

3

基于这些示例:point-labels,您可以使用.jqplot-point-labelCSS 中的类修改点标签的显示。因此,您可以使用 CSStransform属性来旋转文本,如下所述:how-to-draw-vertical-text-with-css-cross-browser

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

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

这是一个工作演示- 但是,看起来 jqPlot 会阻止来自 jsfiddle 的请求,因此有时脚本不会加载。您可以在本地尝试,也可以在一个浏览器窗口中访问jqPlot 演示页面和 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 循环来迭代数组。

于 2012-12-18T14:08:19.423 回答