SSRS折线图动态最大Y轴基于X轴值
SSRS Line Chart Dynamic Max Y Axis Based on X Axis Value
我找了很多地方看这是否可行,但到目前为止还是一无所获。
我想做的是根据 X 轴上的最大值和最小值制作折线图的 Y 轴。我已经想到了如何最好地提出这个问题,我在这里进行了简化。我正在做的事情还有很多,但这是我想不通的部分。
Click to view example: Set Y Axis to X Axis Values
这是数据集的一小部分样本。这是非常基本的。
https://1drv.ms/x/s!AsF_vHid6sbi30XMcIVeA5vqItsF?e=9CmOZk
没有系列组,类别组是按周初值。计算是推荐计数的总和。
我确实尝试编写表达式来引用 MAX(SUM(Fields!RefCount.Value, "CategoryGroupName")) 和其他各种类似的表达式,但由于它超出了 Y 轴的范围,因此无法正常工作。
感谢您的帮助或建议。
我创建了一组随机数据,每次您 运行 报告时它都会改变,非常适合测试。它将所有值加 50,因此我们知道我们永远不会得到零(用于测试)。
我使用了以下数据集查询
DECLARE @t TABLE (ReferralWeek date, RefCnt int)
INSERT INTO @t VALUES
('2020-06-21', 50+(rand()*500)), ('2020-06-21', 50+(rand()*500)), ('2020-06-07', 50+(rand()*500)), ('2020-06-07', 50+(rand()*500)), ('2020-03-29', 50+(rand()*500)),
('2020-06-21', 50+(rand()*500)), ('2020-05-03', 50+(rand()*500)), ('2020-05-24', 50+(rand()*500)), ('2020-06-14', 50+(rand()*500)), ('2020-04-12', 50+(rand()*500)),
('2020-04-19', 50+(rand()*500)), ('2020-04-12', 50+(rand()*500)), ('2020-06-21', 50+(rand()*500)), ('2020-04-26', 50+(rand()*500)), ('2020-06-21', 50+(rand()*500)),
('2020-04-19', 50+(rand()*500)), ('2020-06-07', 50+(rand()*500)), ('2020-05-10', 50+(rand()*500)), ('2020-06-21', 50+(rand()*500)), ('2020-05-10', 50+(rand()*500)),
('2020-05-31', 50+(rand()*500)), ('2020-06-14', 50+(rand()*500)), ('2020-05-17', 50+(rand()*500)), ('2020-04-12', 50+(rand()*500)), ('2020-04-26', 50+(rand()*500)),
('2020-05-03', 50+(rand()*500))
SELECT * FROM @t
然后我创建了一个新报告,添加了折线图,将值设置为 SUM(RefCnt)
并将类别组设置为 ReferralWeek
。
接下来我右键单击类别组并从这里选择“属性”我可以看到名称是 "Chart1_CategoryGroup"
。这是我们需要计算垂直轴范围的范围表达式。
接下来我右键单击垂直轴并选择“属性”。
我将区间类型设置为“数字”,然后将最小值和最大值的表达式设置为以下...
=MIN(SUM(Fields!RefCnt.Value, "Chart1_CategoryGroup"))
和
=MAX(SUM(Fields!RefCnt.Value, "Chart1_CategoryGroup"))
请注意,我们使用类别组名称作为范围名称。
这让我们完成了一部分,但也必须计算间隔,否则最高数字不会;显示在轴上,所以如果他的最高数字是 605,那么轴可能会显示 600,最后一个点略高于它。
我们可以通过计算间隔来解决这个问题。这个简单的例子可能不是 100%,但应该足够接近了。
间隔设置为以下表达式。
=(
MAX(SUM(Fields!RefCnt.Value, "Chart1_CategoryGroup"))
-
MAX(SUM(Fields!RefCnt.Value, "Chart1_CategoryGroup"))
)
/ 10
您可以通过调整“10”除数来调整所需的标签数量。
这给了我们以下信息
小心!
通过使用平滑折线图并根据数据,您的曲线现在可能会从图表底部掉下来。在您的要求范围内,除了向最小值添加一些填充或切换到非平滑图表之外,您无能为力。
这是您可能会得到的示例。 (用于测试的随机数生成器之美!)
我找了很多地方看这是否可行,但到目前为止还是一无所获。
我想做的是根据 X 轴上的最大值和最小值制作折线图的 Y 轴。我已经想到了如何最好地提出这个问题,我在这里进行了简化。我正在做的事情还有很多,但这是我想不通的部分。
Click to view example: Set Y Axis to X Axis Values
这是数据集的一小部分样本。这是非常基本的。 https://1drv.ms/x/s!AsF_vHid6sbi30XMcIVeA5vqItsF?e=9CmOZk
没有系列组,类别组是按周初值。计算是推荐计数的总和。 我确实尝试编写表达式来引用 MAX(SUM(Fields!RefCount.Value, "CategoryGroupName")) 和其他各种类似的表达式,但由于它超出了 Y 轴的范围,因此无法正常工作。
感谢您的帮助或建议。
我创建了一组随机数据,每次您 运行 报告时它都会改变,非常适合测试。它将所有值加 50,因此我们知道我们永远不会得到零(用于测试)。
我使用了以下数据集查询
DECLARE @t TABLE (ReferralWeek date, RefCnt int)
INSERT INTO @t VALUES
('2020-06-21', 50+(rand()*500)), ('2020-06-21', 50+(rand()*500)), ('2020-06-07', 50+(rand()*500)), ('2020-06-07', 50+(rand()*500)), ('2020-03-29', 50+(rand()*500)),
('2020-06-21', 50+(rand()*500)), ('2020-05-03', 50+(rand()*500)), ('2020-05-24', 50+(rand()*500)), ('2020-06-14', 50+(rand()*500)), ('2020-04-12', 50+(rand()*500)),
('2020-04-19', 50+(rand()*500)), ('2020-04-12', 50+(rand()*500)), ('2020-06-21', 50+(rand()*500)), ('2020-04-26', 50+(rand()*500)), ('2020-06-21', 50+(rand()*500)),
('2020-04-19', 50+(rand()*500)), ('2020-06-07', 50+(rand()*500)), ('2020-05-10', 50+(rand()*500)), ('2020-06-21', 50+(rand()*500)), ('2020-05-10', 50+(rand()*500)),
('2020-05-31', 50+(rand()*500)), ('2020-06-14', 50+(rand()*500)), ('2020-05-17', 50+(rand()*500)), ('2020-04-12', 50+(rand()*500)), ('2020-04-26', 50+(rand()*500)),
('2020-05-03', 50+(rand()*500))
SELECT * FROM @t
然后我创建了一个新报告,添加了折线图,将值设置为 SUM(RefCnt)
并将类别组设置为 ReferralWeek
。
接下来我右键单击类别组并从这里选择“属性”我可以看到名称是 "Chart1_CategoryGroup"
。这是我们需要计算垂直轴范围的范围表达式。
接下来我右键单击垂直轴并选择“属性”。
我将区间类型设置为“数字”,然后将最小值和最大值的表达式设置为以下...
=MIN(SUM(Fields!RefCnt.Value, "Chart1_CategoryGroup"))
和
=MAX(SUM(Fields!RefCnt.Value, "Chart1_CategoryGroup"))
请注意,我们使用类别组名称作为范围名称。
这让我们完成了一部分,但也必须计算间隔,否则最高数字不会;显示在轴上,所以如果他的最高数字是 605,那么轴可能会显示 600,最后一个点略高于它。
我们可以通过计算间隔来解决这个问题。这个简单的例子可能不是 100%,但应该足够接近了。
间隔设置为以下表达式。
=(
MAX(SUM(Fields!RefCnt.Value, "Chart1_CategoryGroup"))
-
MAX(SUM(Fields!RefCnt.Value, "Chart1_CategoryGroup"))
)
/ 10
您可以通过调整“10”除数来调整所需的标签数量。
这给了我们以下信息
小心! 通过使用平滑折线图并根据数据,您的曲线现在可能会从图表底部掉下来。在您的要求范围内,除了向最小值添加一些填充或切换到非平滑图表之外,您无能为力。
这是您可能会得到的示例。 (用于测试的随机数生成器之美!)