Xamarin中的Shinobi图表多个,具有2个y轴的多个系列

时间:2018-01-29 15:04:14

标签: c# ios xamarin shinobi

我有一个问题,即将具有2个色谱系列和1个y轴的图表转换为具有相同色谱系列和2个y轴的图表。

顶部您看到带有1个y轴的图表,看起来很精细:

issue example

在底部,您会看到添加了另一个y轴会发生什么,列重叠而不是在x轴刻度线上并排。是否可以覆盖决定列是否应该彼此相邻而不是重叠的方法?如果是这样,我必须覆盖什么?

非常感谢您的帮助。

进一步说明案例:

我们的想法是看到可能具有不同规模的多种趋势,即彼此相邻的销售人员的表现或不同规模市场的销售额,以查看2的相对增长,即使它们的规模可能非常大不同。一个例子是一个销售人员(1)在2017年销售另外的1/10(2),然后在第二年我们可以看到销售员1增加了他的销售额15%,而销售员2只增加了他的销售额2%,因此,我们可以看到哪个销售人员的增长率最高,即使可能已经积累了足够多的客户来销售10倍,我们也可以奖励那些将客户增加15%以上的销售人员。< / p>

该实现使用从pc软件发送的数据,该软件显示在(当前唯一的)IOS应用程序和不同的Web解决方案中。数据可以变化,通常包括带有数字的y轴和带有销售区域或一年中几个月等类别的x轴。每个数据组都是我们添加到图表中的系列,我们为用户提供了选择每个系列的第一个或第二个y轴的选择。 这个列的问题是一个愿望,但数据可以用列和行系列显示,设计师就像列一样,当涉及到比较相同的统计数据时。

另一种解决方案可能是设置单个列系列,以便在它们重叠时仍然可以看到它们,但我找不到这样的变量,并且据我所知,所有列宽都由间距控制,列数,标记数量和图表大小

1 个答案:

答案 0 :(得分:0)

在第一张图片中,当您对两个系列使用相同的轴时,图表会自动将两个列系列组合在一起,因此它们并排显示。在这种情况下,可以使用系列中的groupIndex property覆盖分组,以便它们重叠。

但是,如果系列在同一轴上,则系列只能组合在一起,因此在第二个图像中,由于系列使用不同的y轴,因此无法对它们进行分组(并且groupIndex属性不会影响这种行为)。

要解决此问题,我建议使用SChartDateTimeAxis作为x轴,并调整系列的x值和系列上的barColumnSpacing属性。 style将列放在您想要的位置。

艾利森

编辑:回答您关于事先不知道类别的评论:

由于不可能对具有不同轴的系列进行分组,因此实现所需图表的唯一方法是操纵数据。

在这种情况下,我建议使用SChartNumberAxis并将x值设置为可以根据需要将列分隔开的数字,例如:

let salesData: [[Double : Double]] = [
    [0.5 : 5.65, 3.5 : 12.6, 6.5 : 8.4],
    [1.5 : 4.35, 4.5 : 13.2, 7.5 : 4.6, 10.5 : 0.6]
]

然后,您可以使用sChart:alterTickMark:beforeAddingToAxis:的{​​{1}}方法更改刻度标签文字,例如如果刻度线的值为1,您可以将标签文本设置为&#39; 2017&#39; (别忘了调整标签尺寸以适应);如果它是4你可以设置为&#39; 2018&#39 ;;如果它是您想要显示的数字,则可以将其设置为空。

您可能希望使用系列中的SChartDelegate属性&#39; barColumnSpacing来修复列的宽度。

我意识到这是一个有点复杂的解决方案,所以我想知道你是否可以告诉我们一些关于你的用例的信息?这不是我们之前遇到过的事情。多个y轴通常用于显示尺寸不可比较的数据(例如温度和降雨量),因此以这种方式使用两个柱系列似乎不常见。