Jquery jqPlot条形图未居中(从右到右太远)

Jquery jqPlot条形图未居中(从右到右太远),jquery,jqplot,Jquery,Jqplot,我是jqPlot的新手,所以请不要因为一个简单的问题就打断我 我遵循jqPlot的文档,可以生成和自定义一个简单的2类条形图(仅供参考-条形图的总和不等于100%:)。下面是呈现图形的javascript文件的代码(target div=GraphContainer): 下面是它的呈现方式: 你可能马上就能看到我的小问题,但意义重大。钢筋未居中;在我看来,他们太偏右了。我阅读了以下选项文档: 我在文档中没有看到任何描述左侧条形图水平“平移”的内容。有趣的是,我尝试在seriesDefaults

我是jqPlot的新手,所以请不要因为一个简单的问题就打断我

我遵循jqPlot的文档,可以生成和自定义一个简单的2类条形图(仅供参考-条形图的总和不等于100%:)。下面是呈现图形的javascript文件的代码(target div=GraphContainer):

下面是它的呈现方式:

你可能马上就能看到我的小问题,但意义重大。钢筋未居中;在我看来,他们太偏右了。我阅读了以下选项文档:

我在文档中没有看到任何描述左侧条形图水平“平移”的内容。有趣的是,我尝试在seriesDefaults下切换到barDirection:“水平”,这导致了本质上相同的问题,但在垂直方向(条形太高):

我试图增加目标div的宽度,但这加剧了问题(看起来更糟)。不过,我确实想出了一个黑客解决方案;我添加了第三个高度为0的条,并稍微减小了条宽,这将条向左推(相对于上面的第一个图形),如下图所示(这是向右的一步;使用条宽和填充可能允许我调整):


有人知道如何解决jqPlot上条形图的“居中”问题吗?我在这个网站上看到了一些其他的对齐柱(例如),但到目前为止,没有任何东西对我的具体情况有帮助。

你正在获取分类/顺序数据,并将其拟合到线性/数字x轴(jqPlot会提供给你,除非你另有说明)。jqPlot有一些默认的数字轴填充逻辑,我认为这是失调的根源。在水平条屏幕截图上,您可以看到它将您的值设置为1.0和2.0。我假设默认的填充逻辑将轴从零开始,并将上一个值加25%

理论上你可以避免这种情况。但我认为一个更简单的解决方案是为x使用分类轴(
$.jqplot.CategoryAxisRenderer
),它只是将它们按顺序排列,而不尝试进行任何数值计算或填充x比例

下面的代码基于jqPlot站点提供的代码,并根据您的示例进行了修改:

var graphData = [['Correct', 55],['Incorrect', 18.6]];

$('#GraphContainer').jqplot([graphData], {
    title: 'Correct vs. Incorrect',
    seriesColors:['#00FF00', '#FF0000'],
    seriesDefaults:{
        renderer:$.jqplot.BarRenderer,
        rendererOptions: {
            varyBarColor: true
        }
    },
    axes:{
        xaxis:{
            renderer: $.jqplot.CategoryAxisRenderer
        }
    }
});
请参见此处的工作JSFIDLE示例:


Sure@explunit…代码已经添加。非常感谢…我将尝试这些更改,看看是否可以让它们正常工作。具有讽刺意味的是,我曾考虑添加第三个类别(称为“不确定”)……使用第三个栏(以及更高的栏),不再存在对齐问题。我只遇到了一个1或2条的对齐问题。你的建议很好,现在事情正如我所希望的那样(2条,3条,等等)。一件小事……要在小提琴中标记x轴,我必须从graphData中取出标签(留下一个纯数字数组),并将标签作为记号放在单独的、仅字符串的数组中:[]在xaxis中:
var graphData = [['Correct', 55],['Incorrect', 18.6]];

$('#GraphContainer').jqplot([graphData], {
    title: 'Correct vs. Incorrect',
    seriesColors:['#00FF00', '#FF0000'],
    seriesDefaults:{
        renderer:$.jqplot.BarRenderer,
        rendererOptions: {
            varyBarColor: true
        }
    },
    axes:{
        xaxis:{
            renderer: $.jqplot.CategoryAxisRenderer
        }
    }
});