【问题标题】:I can't get my line graph to plot correctly using jqplot我无法使用 jqplot 正确绘制折线图
【发布时间】:2014-08-04 20:02:47
【问题描述】:

我想绘制一个以以下为 x 轴的图表:

var xaxis = [31.1,31.2,31.3,31.4,31.5, 32.1,32.2,32.3,32.4,32.5];

请注意 31.5 和 32.1 之间是如何跳过的。但是,当我绘制折线图时,这两点之间有很大的空间。这是我的代码:

 $(document).ready(function(){

                var cust1 = [[31.1,10],[31.2,15],[31.3,25],[31.4, 60],[31.5,95]];
                var cust2 = [[31.1,0],[31.2,15],[31.3,30],[31.4, 50],[31.5,85]];

                var data = [];
                data.push(cust1);
                data.push(cust2);

                var xaxis = [31.1,31.2,31.3,31.4,31.5, 32.1,32.2,32.3,32.4,32.5];

                var plot3 = $.jqplot('line-chart', data, 
                  { 
                      title:'Design Progress', 

                      axes: {
                          xaxis: {
                              //renderer: $.jqplot.LineRenderer,
                              label: 'Work Weeks',

                              ticks: xaxis
                          },
                          yaxis: {
                              label: "Percent Complete",
                              max: 100,
                              min: 0
                          }
                      }
                  }
                );

            });

我认为这是因为我没有在我的 xaxis 选项中指定渲染器选项。但是,我尝试使用 $.jqplot.LineRenderer 和 $.jqplot.CategoryAxisRenderer 没有任何运气(我什至将我的 xaxis 值设置为字符串,但这不起作用)。有人知道怎么回事吗?

这里有一张图片来进一步澄清:

【问题讨论】:

  • 所以您已经省略了 31.5 和 32.1 之间的刻度,因为您不希望那里的任何文本为轴标题“工作周”腾出空间。但现在也没有任何垂直线,你确实想要那些。我是否理解正确?
  • @flup 不,工作周标题是完全独立的。我根本不想在我的图表中出现空白。我使用的数据只是从 31.5 跳到 32.1
  • 更清楚地说,我的工作周代表一年中的一周,每周都有 1 到 5(周一到周五)。谢谢
  • 啊哈,好吧,是的。然后发生了这种情况,因为 jqplot 将您给它的数字解释为值,而不是标签。并且在 31.5(三十一岁半)和 32.1(三十二岁又十分之一)之间存在大小 0.6 的差距。

标签: javascript jquery jqplot linegraph


【解决方案1】:

发生的原因:jQuery flot 库正在使用由您的数据确定的值构建图形。

当您提供此类数据时,插件会将轴值设置为与文本相同,并与您提供的数字的边框相同。 您可以做的是将文本设置为与轴值不同。

您可以通过options.xaxis.ticks.push([value, "the text"])轻松完成。

注意你是要设置哪个标签有哪个轴值的人,这需要在调用$plot之前设置options参数

【讨论】:

  • 如果我使用您的上述方法,我是否必须单独推动每个刻度?或者我可以传入我已经创建的数字列表(就像字符串一样)?
  • 您可以将刻度数组与另一个数组连接,但必须使刻度数组中的每个单元格都包含一个由 2 个单元格组成的数组,第一个是轴值(最好是 int ),第二个是文本(最好是 int/string)。
  • @roshambo 想在这里获得反馈 :)
  • 我仍然对放置您给出的行的位置感到有些困惑。当我将它放在我定义 plot3 的位置之前时,我收到一条错误消息,提示未定义选项
  • 我想我明白你的意思了。我可以像这样定义我的刻度:刻度:[[1,"31.1"],[2,"31.2"]] 等
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 2013-05-30
  • 2014-03-01
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
相关资源
最近更新 更多