diff options
Diffstat (limited to 'Master/texmf-dist/doc/metapost/piechartmp/examples/wec-mfun.mp')
-rw-r--r-- | Master/texmf-dist/doc/metapost/piechartmp/examples/wec-mfun.mp | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/metapost/piechartmp/examples/wec-mfun.mp b/Master/texmf-dist/doc/metapost/piechartmp/examples/wec-mfun.mp new file mode 100644 index 00000000000..92d39d11126 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/piechartmp/examples/wec-mfun.mp @@ -0,0 +1,146 @@ +%H +%H piechartMP example - world energy consumption 2000 +%H (extended MetaFun version) +%H Jens-Uwe Morawski, 2002 +%H + + +%I this MetaPost example requires the MetaFun package +%I (see piechartMP documentation) +%I The purpose of this example is to show how pie-charts +%I can be placed in a figure using the pc_Centre variable. +%I wec-mfun.pdf in the same directory contains the final +%I figure. + + +%D This example uses the 'externalfigure' macro from +%D the MetaFun package. If piechartMP is loaded after +%D MetaFun then piechertMP detects MetaFun and will +%D draw segment outsides as gradients. +%D Since here many charts will be drawn it can cause +%D an overflow of the MetaPost buffer-size, +%D therefore piechertMP is loaded prior MetaFun. +%D If the buffer-size of your MetaPost installation is +%D large enough then you can load piechartMP after +%D MetaFun and segment outsides will be drawn as gradients. +input piechartmp ; +input metafun ; + +%D Helvetica-Bold +% This should work on most systems. If not, comment the next line. +defaultfont := "phvb8r" ; +defaultscale := 0.7 ; + +%D +Scale := 5mm ; + +%D define some colors +color oil_color, gas_color, coal_color, nuclear_color, water_color ; +oil_color := (0.4, 0 , 0 ) ; +gas_color := (0 , 0.5, 0 ) ; +coal_color := (0.5, 0.3, 0 ) ; +nuclear_color := (0.8, 0.8, 0.2) ; +water_color := (0.3, 0.3, 1.0) ; + + +%D define some points to place the charts +pair place[] ; +place[1] := (2cm,5cm) ;% North America +place[2] := (7.5cm,3.5cm) ;% Asia +place[3] := (5cm,5.3cm) ;% Europe +place[4] := (6.5cm,5.8cm) ;% CIS +place[5] := (5.6cm,4.2cm) ;% Middle East +place[6] := (2.5cm,2.7cm) ;% South America +place[7] := (5cm,3cm) ;% Africa + + +%D +def AChart (expr Size, Name, Place, Water, Nuclear, Coal, Gas, Oil) = + begingroup; + save label_pnt, Radius ; + pair label_pnt ; numeric Radius ; + + % the 'Size' is the absolute energy consumption + % that means the 'Size' is proportional to the area + % of the pie-chart and not the radius. + Radius := (sqrt Size)*Scale ; + + ResetSegments ; % documented in piechartMP Internals + + if Water>0: + Segment(Water, "", water_color) ; + fi; + if Nuclear>0: + Segment(Nuclear, "", nuclear_color) ; + fi; + if Coal>0: + Segment(Coal, "", coal_color) ; + fi; + if Gas>0: + Segment(Gas, "", gas_color) ; + fi; + if Oil>0: + Segment(Oil, "", oil_color) ; + fi; + + pc_Centre := place[Place] ; % documented in piechartMP Internals + PieChart(Radius, 0.3, 65, 90, 0) ; + label_pnt := SegmentPoint(1,(1,0)); + label.top (Name & "; " & (decimal Size), label_pnt) withcolor white; + + endgroup; +enddef; + + +beginfig(1); + +%D 'externalfigure' is a macro from the MetaFun package. +%D It embeds the external JPG-Background, the file worldmap.jpg +%D should be available from the same location as this +%D MP file. +externalfigure "worldmap.jpg" xscaled 10cm yscaled 7cm ; + +AChart (3.8, "North-America", 1, 2, 6, 25, 32, 35 ) ; +AChart (3.4, "Asia/Oceania", 2, 2, 5, 46, 10, 38 ) ; +AChart (2.6, "Europe", 3, 4, 16, 18, 20, 42 ) ; +AChart (1.3, "CIS", 4, 2, 6, 18, 50, 24 ) ; +AChart (0.5, "Middle East", 5, 0, 0, 0, 35, 65 ) ; +AChart (0.5, "South-America",6 , 15, 0, 5, 15, 65 ) ; +AChart (0.4, "Africa",7 , 0, 0, 37, 18, 45 ) ; + + +%D the legend +x := 3mm ; +y := 2.5cm ; +fill fullcircle scaled 2mm shifted (x,y) withcolor oil_color; +label.rt ("Oil", (x+2mm,y)) ; +fill fullcircle scaled 2mm shifted (x,(y-5mm)) withcolor gas_color; +label.rt ("Gas", (x+2mm,y-5mm)) ; +fill fullcircle scaled 2mm shifted (x,(y-1cm)) withcolor coal_color; +label.rt ("Coal", (x+2mm,y-1cm)) ; +fill fullcircle scaled 2mm shifted (x,(y-1.5cm)) withcolor nuclear_color; +label.rt ("Nuclear Power", (x+2mm,y-1.5cm)) ; +fill fullcircle scaled 2mm shifted (x,(y-2cm)) withcolor water_color; +label.rt ("Water Power", (x+2mm,y-2cm)) ; + + +%D some labels +label.top ("(in billion t MCU)", (7cm,0)) ; +defaultfont:="ptmbi8r" ; defaultscale:= 1.2; +label("World Energy Consumption 2000", origin) + rotated 90 shifted (9.5cm,3cm) withcolor white; + + +%D Next follows the grid I have used to determine the co-ordinates +%D saved in place[]. Now it is not drawn because of the if..fi +%D statement. +if false: +for i=1 upto 10: + draw (origin--(0,7cm)) shifted (i*1cm,0) withcolor white ; +endfor; +for i=1 upto 7: + draw (origin--(10cm,0)) shifted (0,i*1cm) withcolor white ; +endfor; +fi; +endfig; +end
\ No newline at end of file |