如何跨多个形状图指定一致的颜色(Report Builder 3.0 和 SSRS)

在非形状图中,根据图表中各序列的索引来从调色板选择新颜色。例如,图表中的第一个序列将映射到调色板中的第一个颜色。但是,对于形状图,该行为则不相同。在形状图中,调色板中的每个颜色都映射到数据集中的数据点。例如,数据点 1 映射到调色板中的第一个颜色,数据点 2 映射调色板中的第二个颜色,依此类推。

如果数据点没有值,该数据点则不显示在形状图中。这表示显示颜色时将跳过此数据点。例如,如果点 2 的值为零,点 1 将映射到调色板中的第一个颜色,点 3 将映射到调色板中的第二个颜色。上述方法非常有用,因为除非在必要情况下,否则当不需要绘制饼图数据集中的空点时,空点不会使用调色板颜色。

其副作用是,当在报表中显示多个饼图时,饼图可能会对具有相同类别分组的数据点显示不同的颜色。若要解决该问题,您需要定义映射到类别组而不是各数据值的每一种颜色。您如何进行定义取决于形状图是否是表或矩阵中的迷你图或者它们是否是报表本身中的形状图。

图例与序列相连,因此为序列指定的任何颜色将自动在图例上显示。

注意注意

在 Business Intelligence Development Studio 中,您可以在 Report Builder 3.0 和报表设计器中创建和修改报表定义 (.rdl)。每个创作环境提供了不同的方式来创建、打开和保存报表和相关项。有关详细信息,请参阅 Web 上 microsoft.com 中的“在报表设计器和 Report Builder 3.0 中设计报表 (SSRS)”。

在表或矩阵中跨多个迷你图形状图指定一致的颜色

  1. 单击图表以显示“图表数据”窗格。

  2. 在**“类别组”区域中右键单击某一类别,然后单击“类别组属性”**。

  3. 在“常规”选项卡上的**“同步其中的组”框中,单击要同步其颜色的类别的名称,然后单击“确定”**。

跨多个形状图指定一致的颜色

  1. 右键单击表体外部区域,然后选择**“报表属性”**。

  2. 在**“代码”**中,将以下代码键入到文本框中。

        Private colorPalette As String() = {"Color1", "Color2", "Color3"}
        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
    
    注意注意

    您需要用您自己的颜色替换“Color1”。可以使用命名颜色,例如“Red”,也可以使用表示颜色的六位十六进制值,例如用“#FFFFFF”表示黑色。如果已定义三种以上的颜色,则需要扩展颜色数组,以使数组中的颜色数与形状图中的点数匹配。通过指定包含命名颜色或颜色的十六进制表示形式、且以逗号分隔的字符串值列表,可以向数组添加新的颜色。

  3. 单击“确定”。

  4. 右键单击形状图并选择**“序列属性”**。

  5. 在**“填充”中,单击“表达式”(fx) 按钮可以编辑“颜色”**属性的表达式。

  6. 键入以下表达式,其中“MyCategoryField”是在**“类别组”**区域中显示的字段:

    =Code.GetColor(Fields!MyCategoryField)