winforms - Microsoft.Office.Interop.PowerPoint Chart - with broken y-Axis -
we using interop powerpoint chart type generate area chart shown in figure. need "broken" y-axis. dont want break on bars - need break on y-axis. unable find property or method accomplish this.
this winforms application. appreciate pointers...
accidentally stumbled upon question, , allow curiosity takes over. got how it's done taken this site.
i'm using illustration info above site walkthrough.
the step this:
assign cutting value info separation. separate info using cutting value (i utilize cutting value 7,500,000 example)this info separation illustration (above original, below separated):
may june july london 1,234,565 1,452,369 1,478,852 paris 2,363,645 34,568,876 5,562,413 madrid 32,645,254 3,211,654 5,857,421 brussels 5,914,753 5,544,221 3,620,015 lisbon 5,824,676 4,541,258 4,015,876 munich 2,501,478 6,325,698 4,569,872 may june july column4 column5 column6 london 1,234,565 1,452,369 1,478,852 0 0 0 paris 2,363,645 7,500,000 5,562,413 0 34,568,876 0 madrid 7,500,000 3,211,654 5,857,421 32,645,254 0 0 brussels 5,914,753 5,544,221 3,620,015 0 0 0 lisbon 5,824,676 4,541,258 4,015,876 0 0 0 munich 2,501,478 6,325,698 4,569,872 0 0 0
assign column4
, column5
, , column6
secondary axis.
dim c microsoft.office.interop.powerpoint.chart dim sc microsoft.office.interop.powerpoint.seriescollection = nil dim sr microsoft.office.interop.powerpoint.series = nil sc = c.seriescollection = 4 sc.count sr = sc.seriescollection(i) sr.axisgroup = microsoft.office.interop.powerpoint.xlaxisgroup.xlsecondary next
change primary , secondary axis scale fit though chart separated. alter primary axis scale 0 1.6e7, , secondary axis scale -7.0e7 7.0e7. @ same time, alter display unit in millions, , remove gridlines.
dim ax microsoft.office.interop.powerpoint.axes dim axpri microsoft.office.interop.powerpoint.axis dim axsec microsoft.office.interop.powerpoint.axis ax = c.axes axpri = ax.item(microsoft.office.interop.powerpoint.xlaxistype.xlvalue, _ microsoft.office.interop.powerpoint.xlaxisgroup.xlprimary) axsec = ax.item(microsoft.office.interop.powerpoint.xlaxistype.xlvalue, _ microsoft.office.interop.powerpoint.xlaxisgroup.xlsecondary) axpri.minimumscale = 0 axpri.maximumscale = 1.6e7 axpri.displayunit = microsoft.office.interop.powerpoint.xldisplayunit.xlmillions axpri.hasmajorgridlines = false axpri.hasminorgridlines = false axsec.minimumscale = -7.0e7 axsec.maximumscale = 7.0e7 axsec.displayunit = microsoft.office.interop.powerpoint.xldisplayunit.xlmillions axsec.hasmajorgridlines = false axsec.hasminorgridlines = false
change primary , secondary axis number format each axis show own intended value. primary axis more 8m not shown, , secondary axis less 30m not shown.
axpri.ticklabels.numberformat = "[<=8]0;;;" axsec.ticklabels.numberformat = "[>=30]0;;;"
recolor series in secondary axis match series in primary axis.
dim srprev microsoft.office.interop.powerpoint.series = nil = 4 sc.count sr = sc.seriescollection(i) srprev = sc.seriescollection(i - 3) sr.format.fill.forecolor.rgb = srprev.format.fill.forecolor.rgb next
delete legend column4
, column5
, , column6
seamless chart legend.
c.legend.legendentries(4).delete() c.legend.legendentries(5).delete() c.legend.legendentries(6).delete()
[optional] add together neat color gradient info points exceed cutting values.
dim p microsoft.office.interop.powerpoint.point = nil p = c.seriescollection("june").points("paris") p.format.fill.twocolorgradient(microsoft.office.core.msogradientstyle.msogradienthorizontal, 1) p.format.fill.gradientangle = 270 p.format.fill.gradientstops.insert(p.format.fill.forecolor.rgb, 0.8) p.format.fill.gradientstops.insert(p.format.fill.backcolor.rgb, 0.97) p = c.seriescollection("may").points("madrid") p.format.fill.twocolorgradient(microsoft.office.core.msogradientstyle.msogradienthorizontal, 1) p.format.fill.gradientangle = 270 p.format.fill.gradientstops.insert(p.format.fill.forecolor.rgb, 0.8) p.format.fill.gradientstops.insert(p.format.fill.backcolor.rgb, 0.97) p = c.seriescollection("column5").points("paris") p.format.fill.twocolorgradient(microsoft.office.core.msogradientstyle.msogradienthorizontal, 1) p.format.fill.gradientangle = 90 p.format.fill.gradientstops.insert(p.format.fill.forecolor.rgb, 0.7) p.format.fill.gradientstops.insert(p.format.fill.backcolor.rgb, 0.95) p = c.seriescollection("column4").points("madrid") p.format.fill.twocolorgradient(microsoft.office.core.msogradientstyle.msogradienthorizontal, 1) p.format.fill.gradientangle = 90 p.format.fill.gradientstops.insert(p.format.fill.forecolor.rgb, 0.7) p.format.fill.gradientstops.insert(p.format.fill.backcolor.rgb, 0.95)
voila! hard work pays off, broken y axis in powerpoint chart.
winforms powerpoint winforms-interop
No comments:
Post a Comment