ssrs图表线没有连接

时间:2015-10-05 16:19:28

标签: reporting-services charts line

我有一个SSRS折线图,它绘制了X轴上的平方英尺和Y轴上的价格的供应点。现在我真的不在乎让它变得恰到好处。我正在通过Subdivision / Builder绘制点和分组。

所以例如Subdivision A有构建器Y和Z.我想为Subdivision A builder Y和Subdivision A Builder Z显示不同的颜色和线。

问题是当另一个细分构建器组合的一个点分解该行时,这些行没有连接。

由于黄点位于灰点之间,灰线和下方的点并非全部连通,因此灰线未连接到所有灰点。

如何通过线连接相同颜色的点(相同的细分/构建器)?

Picture

2 个答案:

答案 0 :(得分:1)

正如我最近发现的那样,这个问题通常是由SSRS未正确处理的数据中的null值引起的。没有看到你的数据,我无法确定是什么原因,但是null是我遇到同样行为的罪魁祸首。

解决方案通常涉及为系列上的EmptyPoint属性的颜色指定值,有时与设置EmptyPointValue以指定null处理相结合。我在网上发现了很多关于这个问题的引用,但是我只会发布最好的两个链接,这两个链接都在StackExchange上:

  1. 主题SSRS Line Chart NULL VALUE - Horizontal Line包含对此问题的详尽讨论。通常的解决方法是使用IIf对每行的颜色表达式进行硬编码,但有时这不是一个选项,特别是如果您要分组的字段具有动态,不可预测的值,作为我的数据集没有。
  2. 在那里张贴的图片描绘了相同类型的换行符的清晰示例。名为trubs的用户发布了一个代码示例,该示例演示了如何设置EmptyPoint,以防Iif工作:

      

    =iif(isNothing(Fields!SelectedValue.Value),'No Color',"LightBlue")

    1. SSRS Line Chart Not Connecting Data Points中的第一个回复详细说明了EmptyPoint值& null是根本原因,简单的硬编码IIf将无法解决问题。虽然我还没有按照我喜欢的方式使我的线条颜色与点标记相匹配,但我可以验证这个解决方案至少可以为您提供线条,并允许您为它们指定各种颜色。它非常简单,仅涉及粘贴一些VB代码以获得一些颜色属性。
    2. 我在评论部分被要求提供解决方案的详细信息,但不想剽窃,所以我只是直接引用JohnBob的答案:

        

      首先,为了让线路加入,你需要设置   系列的EmptyPoint颜色。

           

      在图表中选择您的系列在属性选项卡中(不是   对话框)向下钻取到EmptyPoint属性并将颜色设置为   是黑色

           

      这会让他们加入 - 耶!但部分线条是颜色   而另一部分是黑色的,对吗?这有点傻,特别是   考虑是否在EmptyPoint上将颜色保留为Automatic   这将是透明的。

           

      那么,我们需要获得系列和EmptyPoint的颜色   同步。使用此处的代码。我在代码中添加了一些代码   报告。

           

      1)。右键单击报表上的空白区域,然后选择“报表”   属性“2)。在代码选项卡中,粘贴以下内容:

      Private colorPalette As String() = {"#418CF0", "#FCB441", "#E0400A", "#05642E", "#1A3B69", "#BFBFBF", "#E0400A", "#FCB441", "DarkBlue", "Tomato", "Orange", "CornflowerBlue", "Gold", "Red", "Green", "LightBlue", "Lime", "Maroon", "LightSteelBlue", "Tan", "Silver"}
      Private count As Integer = 0
      Private mapping As New System.Collections.Hashtable()
      
          Public Function GetColor(ByVal groupingValue As String) As String
      
              If mapping.ContainsKey(groupingValue) Then
                      Return mapping(groupingValue)
              End If
      
              Dim c As String = colorPalette(count Mod colorPalette.Length)
                  count = count + 1
                  mapping.Add(groupingValue, c)
                  Return c
          End Function
      
        

      然后我们需要在设置系列的颜色时调用此代码   以及EmptyPoint。

      Select your series
      In the properties tab paste something the following (replace WhateverTheGroupIsForYourSeries with your series group name):
      
           

      =Code.GetColor(Fields!*WhateverTheGroupIsForYourSeries*.Value)       深入查看EmptyPoint Series属性的color元素       粘贴与第2点相同的文本[例如=Code.GetColor(Fields!*WhateverTheGroupIsForYourSeries*.Value)]

           

      瞧!你完成了!我无法相信有多么困难   这是:D

      我希望这会有所帮助。

答案 1 :(得分:0)

Solution

只需将您的字段!(YourSeriesGroup).Series组中的值放在的上方 字段(YourCategoryGroup)。类别组中的值,您的系列组应同时在系列组和类别组中(应在初始类别组的上方)。

然后右键单击水平轴,然后选择“水平轴属性”。将“轴类型”设置为“标量”,然后单击“确定”。

Result