Я создал Матрицу, которая показывает нам, сколько раз каждый предмет был продан за определенный период (т. Е. Ежедневно, еженедельно, ежемесячно и т. Д.).
Вот как выглядит матрица без закрашенных цветов. в:
![enter image description here](https://i.stack.imgur.com/sn0Bb.png)
![sql](https://i.stack.imgur.com/ggRqa.png)
Что я хочу сделать, это превратить эту матрицу в сортировкутепловой карты, где чем выше число, тем оно краснее по сравнению с каким-то максимальным значением.
Я использую код, который я нашел здесь -> https://social.technet.microsoft.com/wiki/contents/articles/40153.ssrs-how-to-apply-heat-map-color-formatting.aspx
Public Function HeatMapColorGradate( _
ByVal Value As Double _
, ByVal MaxPositive As Double _
, ByVal Neutral As Double _
, ByVal ColStr As String) As String
'------------------------------------------------------------------------------------------------
' Purpose: To use a color gradations on a heatmap report
' Example: BackgroundColor =Code.HeatMapColorGradate(25, 100, -10, Variables!ColorEventCountGradate.Value)
' BackgroundColor =Code.HeatMapColorGradate(dayValue, maxValue, 0, "#2322EE")
' Note: Use a negative number as the "Neutral" number to avoid too light of a color
'------------------------------------------------------------------------------------------------
Const Shd As Double = 255
Dim ColVar1 As Integer = Convert.ToInt32(Left(Right(ColStr, 6), 2), 16)
Dim ColVar2 As Integer = Convert.ToInt32(Left(Right(ColStr, 4), 2), 16)
Dim ColVar3 As Integer = Convert.ToInt32(Right(ColStr, 2), 16) 'Find Largest Range 'Split the #RGB color to R, G, and B components
Dim decPosRange As Double = Math.Abs(MaxPositive - Neutral) 'Find appropriate color shade
Dim iColor1 As Integer = ColVar1 + CInt(Math.Round((MaxPositive - Value) * ((Shd - ColVar1) / decPosRange)))
Dim iColor2 As Integer = ColVar2 + CInt(Math.Round((MaxPositive - Value) * ((Shd - ColVar2) / decPosRange)))
Dim iColor3 As Integer = ColVar3 + CInt(Math.Round((MaxPositive - Value) * ((Shd - ColVar3) / decPosRange))) 'Return the new color
Dim heatMapColor As String = "#" & iColor1.ToString("X2") & iColor2.ToString("X2") & iColor3.ToString("X2") 'Reduce a shade for each of the R,G,B components
Return heatMapColor
End Function
Это функция, которая принимает текущее значение и максимальное значение и соответственно окрашивает ячейку.
Моя проблема в том, что для моей матрицы значение текущего текстового поля равно = Sum (Fields! Touches.ValueОднако текстовое поле для максимального значения точно такое же, = Sum (Fields! Touches.Value). Но так как оно находится в другой группе, оно дает другой результат (сумма предыдущих сумм). Так что, если яиспользуйте эти два значения, я просто получаю один и тот же темный цвет в каждом текстовом поле.
![enter image description here](https://i.stack.imgur.com/Zs5tV.png)
Может быть, я использую неправильное значение и максимальное значение? У кого-нибудь есть советы как это сделать?