首页 > 解决方案 > SSRS 折线图基于 X 轴值的动态最大 Y 轴

问题描述

我已经看了很多地方,看看这是否可能,但到目前为止都是空的。

我要做的是根据 X 轴上的最大值和最小值制作折线图的 Y 轴。我已经想到了如何最好地问这个问题,我在这里简化了。我正在做的还有更多,但这是我无法弄清楚的部分。

点击查看示例:将 Y 轴设置为 X 轴值

这是数据集的一个小样本。这是非常基本的。 https://1drv.ms/x/s!AsF_vHid6sbi30XMcIVeA5vqItsF?e=9CmOZk

没有系列组,类别组基于周起始值。计算是推荐计数的总和。我确实尝试编写表达式来引用 MAX(SUM(Fields!RefCount.Value, "CategoryGroupName")) 和其他各种类似的表达式,但由于它超出了 Y 轴的范围,所以它不起作用。

感谢您的任何帮助或建议。

标签: reporting-servicesyaxis

解决方案


我创建了一组随机数据,每次运行报告时它都会发生变化,非常适合测试。它将所有值加 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”除数来调整所需的标签数量。

这给了我们以下 在此处输入图像描述

谨防!通过使用平滑折线图并根据数据,您的曲线现在可能会从图表底部脱落。在您的要求范围内,除了向最小值添加一些填充或切换到非平滑图表之外,您无能为力。

这是您可能会得到的示例。(用于测试的随机数生成器的美妙之处!)

在此处输入图像描述


推荐阅读