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”除数来调整所需的标签数量。

这给了我们以下信息

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

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