如何在 Excel 2007 中并排创建按比例大小的饼图?

如何在 Excel 2007 中并排创建按比例大小的饼图?

我有一个包含两组数据的数据透视表,如下所示:

           2011    2012
Slice A      45      20
Slice B      33      28
Slice C      22       2

我想要并排显示两个饼图,一个包含 2011 年的数据,另一个包含 2012 年的数据。我希望每个饼图的相对大小能够反映总数,也就是说,包含 2011 年数据的饼图(总计 100)应该是包含 2012 年数据的饼图(总计 50)的两倍。

“饼图”图表类型似乎最接近我想要的,但它从一个切片中分离出数据并将其显示在第二个图表中,因此在这里并不合适。

答案1

我修改了这个气泡图来做同样的事情。它可能会给你一些启发。

http://www.andypope.info/charts/piedatamarkers.htm

答案2

请尝试以下宏:

它对我来说很好用,抱歉我没有时间提供更完整的答案

Sub graph()
'
' Pie chart Resizing Macro by David Birch
' will resize and centre a chart relative to a maximum value entered below. This maximum MUST be changed per set of graphs
' USAGE :
' 1) simply set the "Max Tota Over All Graphs" variable
' 2) select a graph
' 3) run the macro
'
' Keyboard Shortcut: Ctrl+g
'

' CONFIG
    MaxTotalOverAllGraphs = 20000 ' THIS VALUE MUST BE CHANGED for each use of this macro (each set of charts)
    MaxChartDiameter = 200 ' This value may also be changed


' start of macro

    XPieChartMargin = (ActiveChart.ChartArea.Width - MaxChartDiameter) * 0.5
    YPieChartMargin = (ActiveChart.ChartArea.Height - MaxChartDiameter) * 0.5

    ThisGraphTotal = Application.WorksheetFunction.Sum(ActiveChart.SeriesCollection(1).Values)

 '   MsgBox ThisGraphTotal

    MaxChartArea = 3.14159 * (MaxChartDiameter / 2#) * (MaxChartDiameter / 2#)
    MaxChartAreaPerUnit = MaxChartArea / MaxTotalOverAllGraphs

    ThisGraphArea = ThisGraphTotal * MaxChartAreaPerUnit
    ThisGraphDiameter = 2# * ((ThisGraphArea / 3.14159) ^ (0.5))

'MsgBox ThisGraphDiameter

    ActiveChart.PlotArea.Width = ThisGraphDiameter
    ActiveChart.PlotArea.Height = ThisGraphDiameter
    ActiveChart.PlotArea.Left = XPieChartMargin + (0.5 * (MaxChartDiameter - ThisGraphDiameter))
    ActiveChart.PlotArea.Top = YPieChartMargin + (0.5 * (MaxChartDiameter - ThisGraphDiameter))


End Sub

答案3

如果您时间紧迫,我会查看甜甜圈图或雷达图,但是此链接似乎问了同样的问题......http://www.andypope.info/charts/pies.htm- 不是我的,只是从论坛上看到的?祝一切顺利,戴夫

答案4

您可以通过选择绘图区域并拖动角来更改饼图的大小:

SU321317 示例

如果“用眼睛”还不够准确,那么可以按如下方法测量一个馅饼的直径:

  1. 将每个饼图的一个直径定位在列边界上(例如,2011 年的左侧位于 F/G)。
  2. 将 G/H 边界拖到饼图的右侧(此处为 219 像素)但返回到原始位置。

然后计算另一个饼图所需的直径(这里是 155 像素)并根据需要对齐绘图区域边界(经过反复试验)。

编辑以添加宏版本:

Sub Macro1()
Range("C2:C4").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C2").Select
ActiveCell.FormulaR1C1 = "=RC[1]*SUM(R2C[-1]:R4C[-1])/SUM(R2C[1]:R[2]C[1])"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C4"), Type:=xlFillDefault
Columns("B:B").Select
Selection.EntireColumn.Hidden = True
Range("A1:C4").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'Sheet1 (2)'!$A$1:$C$4")
ActiveChart.ChartType = xlPie
Columns("A:C").Select
Selection.EntireColumn.Hidden = False
Range("A1:B4").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'Sheet1 (2)'!$A$1:$B$4")
ActiveChart.ChartType = xlPie
End Sub

相关内容