Compartilhar via


Como especificar cores consistentes em gráficos com várias formas (Construtor de Relatórios 2.0)

Em gráficos sem forma, uma cor nova é selecionada na paleta com base no índice da série no gráfico. Por exemplo, a primeira série do gráfico é mapeada para a primeira cor da paleta. No entanto, esse comportamento é diferente em gráficos com forma. Em gráficos com forma, todas as cores da paleta são mapeadas para um ponto de dados no conjunto de dados. Por exemplo, o ponto de dados 1 é mapeado para a primeira cor da paleta, o ponto de dados 2 é mapeado para a segunda paleta de cores e assim por diante.

Caso não tenha nenhum valor, um ponto de dados é omitido na exibição de um gráfico com forma. Isso significa que o ponto de dados deixa de ser colorido. Por exemplo, se o ponto de dados 2 tiver um valor igual a zero, o ponto de dados 1 será mapeado para a primeira cor da paleta e o ponto 3, para a segunda cor da paleta. Essa abordagem é útil porque os pontos vazios no conjunto de dados de um gráfico de pizza não necessariamente usam uma cor da paleta quando o ponto vazio não precisa ser desenhado.

Como efeito colateral, quando vários gráficos de pizza são exibidos em um relatório, os gráficos de pizza podem exibir cores diferentes dos pontos de dados com o mesmo agrupamento da categoria. Para resolver isso, você precisará definir cores individuais mapeadas para um grupo de categorias, e não valores de dados individuais.

Como a legenda é conectada à série, todas as cores especificadas para a série serão mostradas automaticamente na legenda.

Para especificar cores consistentes em vários gráficos com forma

  1. Clique com o botão direito do mouse fora do corpo do relatório e selecione Propriedades do Relatório.

  2. Em Código, digite o seguinte código na caixa de texto.

        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
    
    ObservaçãoObservação

    Você precisará substituir as cadeias de caracteres "Color1" por cores próprias. É possível usar cores nomeadas, por exemplo "Vermelho" ou usar valor hexadecimal de seis dígitos que representam a cor como "#FFFFFF" para preto. Se tiver mais de três cores definidas, você precisará estender a matriz de cores para que o número de cores na matriz corresponda ao número de pontos do gráfico com forma. É possível adicionar novas cores à matriz especificando uma lista separada por vírgulas dos valores da cadeia de caracteres que contêm cores nomeadas ou representações hexadecimais das cores.

  3. Clique em OK.

  4. Clique com o botão direito do mouse no gráfico com forma e selecione Propriedades da Série.

  5. Em Preenchimento, clique no botão Expressão (fx) para editar a expressão de acordo com a propriedade Cor.

  6. Digite a seguinte expressão em que "MyCategoryField" é o campo exibido na área para arrastar e soltar a categoria:

    =Code.GetColor(Fields!MyCategoryField)