如何在 SSRS 2005 中旋转饼图






4.50/5 (5投票s)
如何在 SSRS 2005 中更改饼图中第一个扇形的角度。
引言
在本文中,我们将讨论使用 SSRS 2005 的人们遇到的一个常见问题。该软件不允许用户明确定义饼图的起始角度,许多图表专家认为,该软件的硬编码默认设置并非最佳。在本文中,我将向您展示如何使用 UI 中提供的一些简单功能来解决此问题。
背景
本文将对熟悉如何在 SSRS 中手动构建报表的人员有所帮助。因此,如果您没有使用 SSRS 的经验,那么本文不适合您。
饼图在报表应用程序中无处不在,因为它们易于理解,并为任何报表增添了额外的色彩。虽然我不提倡过度使用饼图来制作每个报表,但它们可以很有用,并且可以使您的报表更赏心悦目。Gene Zelazny 的著作“用图表表达”建议首先放置最重要的饼图扇形,并将饼图的扇形从 12:00 开始。SSRS 2005 中饼图的默认设置是从 3:00 开始,这使得饼图外观不寻常且难以阅读。
使用代码
首先要做的是创建一个新的 SSRS 报告项目,并向其中添加一个新报告,不要使用向导。接下来,创建一个数据集并建立与可从 CodePlex 获取的 AdventureWorks 示例数据库的连接。将命令类型设置为“文本”,因为您将在 SQL 中编写查询,而不是使用存储过程。将以下代码复制到查询窗口中,如下所示
SELECT TOP 10 a.ProductID, a.Name, a.TotalSales
FROM
(
SELECT p.ProductID, p.Name, SUM(soh.TotalDue) AS TotalSales
FROM Production.Product p WITH(NOLOCK)
JOIN Sales.SalesOrderDetail sod WITH(NOLOCK) ON
sod.ProductID = p.ProductID
JOIN Sales.SalesOrderHeader soh WITH(NOLOCK) ON
soh.SalesOrderID = sod.SalesOrderID
WHERE CONVERT(DATETIME, CONVERT(VARCHAR, soh.OrderDate, 101))
BETWEEN @StartDate AND @EndDate
GROUP BY p.ProductID, p.Name
) a
ORDER BY NewID()
接下来,转到“布局”选项卡,然后从工具箱侧边栏中拖动一个图表。右键单击该图表,然后转到属性。从“图表类型”列表中选择“饼图”。您的对话框应该如下所示
现在,从“调色板”下拉框中选择“柔和”(这将使您可以读取饼图的每个扇形中的值)。单击“确定”。
从“数据集”侧边栏中,将 TotalSales 值拖到图表上,然后将其拖放到显示“在此处放置数据字段”的区域。接下来,将 Name 值从“数据集”侧边栏拖到图表中显示“在此处放置类别字段”的区域。
完成后,右键单击该图表,然后单击“属性”。转到“图表属性”对话框中的“数据”选项卡,然后单击“值”列表旁边的“编辑”。加载该对话框后,单击“点标签”,并将其填写成这样
这将使我们显示饼图中每个楔形的百分比(四舍五入到最接近的整数)。单击“确定”。
在“图表属性”对话框中,转到“3D 效果”选项卡,并将其设置为如下所示
基本上,我们告诉 SSRS 制作一个看起来平坦的图表,但它被逆时针旋转了 90 度,这使得我们的饼图从 12:00 开始而不是 3:00 开始。只要您告诉它不要使用任何着色技巧并使其正交,它应该看起来像一个普通的饼图(而不是一个 3D 饼图)。
一些最后的润色
转到“图例”选项卡并使其看起来像这样
然后,转到“数据”选项卡,单击“编辑”按钮旁边的“类别字段”。现在,转到“排序”选项卡,单击网格中的第一个框,然后从下拉列表中选择“Fields!TotalSales.Value”。接下来,将网格中同一行的排序顺序更改为降序。这将确保您的图表从 12:00 开始显示最重要的扇形。
关注点
有趣的是,他们决定从 3:00 开始饼图,但我的猜测是这只是一个简单的疏忽,而不是有意为之。话虽如此,我很高兴有一种方法(尽管不优雅)可以进行调整。
历史
- 提交文章的初步修订版。