Como posso criar gráficos de pizza de tamanho proporcional lado a lado no Excel 2007?

2

Eu tenho uma tabela dinâmica com dois conjuntos de dados da seguinte forma:

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

Estou tentando apresentar dois gráficos de setores lado a lado, um com os dados de 2011 e outro com os dados de 2012. Quero que o tamanho relativo de cada gráfico de pizza reflita os totais, ou seja, o gráfico de pizza com os dados de 2011 (totalizando 100) deve ser o dobro do tamanho do gráfico de pizza com os dados de 2012 (totalizando 50).

O tipo de gráfico 'pie of pie' parece estar mais próximo do que estou procurando, mas isso quebra os dados de uma fatia e a apresenta em um segundo diagrama, portanto, não é apropriado aqui.

    
por Andrew Doran 10.08.2011 / 12:43

4 respostas

1

Eu modifiquei este gráfico de bolhas para fazer a mesma coisa. Pode te dar algumas ideias.

link

    
por 21.06.2013 / 14:39
1

Por favor, tente a seguinte macro:

Funciona muito bem para mim, desculpe, eu não tenho tempo para fornecer uma resposta mais completa

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
    
por 21.06.2013 / 15:47
0

Se o seu tempo pressionado eu olhar para diagramas Donut ou Radar vez, no entanto, este link parece pedir a mesma pergunta ... link - não é meu apenas um fórum? Muito bem sucedida Dave

    
por 10.08.2011 / 14:10
0

Você pode alterar o tamanho de uma pizza selecionando a área de plotagem e arrastando um canto para se adequar:

Se'aolhonu'nãoforexatoosuficiente,meçaodiâmetrodeumapizzacomoabaixo:

  1. Posicioneumdiâmetrodecadapizzaemumlimitedecoluna(porexemplo,aesquerdade2011estáemF/G).
  2. ArrasteolimiteG/Hparaoladodireitodapizza(aqui219pixels),masretorneàposiçãooriginal.

Emseguida,calculeodiâmetronecessáriodaoutrapizza(aqui155pixels)ealinheolimitedaáreadeplotagemconformenecessário(comalgumatentativaeerro).

Editadoparaadicionarversãodemacro:

SubMacro1()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
    
por 28.12.2012 / 16:24