2

У меня есть сводная таблица с двумя наборами данных следующим образом:

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

Я пытаюсь представить две круговые диаграммы бок о бок, одну с данными 2011 года и одну с данными 2012 года. Я хочу, чтобы относительный размер каждой круговой диаграммы отражал итоги, то есть круговая диаграмма с данными 2011 года (всего 100) должна быть в два раза больше, чем круговая диаграмма с данными 2012 года (всего 50).

Тип диаграммы «круговая диаграмма», кажется, наиболее близок к тому, что я ищу, но это разбивает данные из одного среза и представляет их на второй диаграмме, поэтому здесь это не подходит.

4 ответа4

1

Я изменил эту пузырьковую диаграмму, чтобы сделать то же самое. Это может дать вам некоторые идеи.

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

1

Пожалуйста, попробуйте следующий макрос:

Это хорошо работает для меня, извините, у меня нет времени, чтобы дать более полный ответ

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
0

Если бы у вас не хватило времени, я бы вместо этого обратился к диаграммам пончиков или радаров, однако эта ссылка, похоже, задает тот же вопрос ... http://www.andypope.info/charts/pies.htm - не моя, просто вне форума ? Всего наилучшего, Дэйв

0

Вы можете изменить размер пирога, выбрав область графика и перетащив угол, чтобы он подходил:

Пример 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .