+
    bIi                     ^   R t Rt^ RIHt ^ RI5 ^ RI5 ^ RIHtHt ^ RI	H
t
HtHtHtHtHt ^ RIHtHtHt ^ RIHt ^ RIHtHtHtHt ^ RI5 ^ R	IHtHt ^ R
IH t H!t!H"t" ^ RI#H$t$H%t% ^ RI&H't' ^RI(H)t)  ! R R]4      t* ! R R]+4      t, ! R R]4      t- ! R R4      t. ! R R4      t/ ! R R]/]"4      t0 ! R R]/]4      t1^ RI2H3t3  ! R R]34      t4 ! R R ]44      t5. R3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@NRANRBNRCNRDNRENRFNRGNRHNRINRJNRKNRLNRMNRNNRONRPNRQNRRN. R3NRSNRTNRUNRVNRWNRXNRYNRZNR[NR\NR]NR^NR_NR`NRaNRbNRcNRdNReNRfNRgNRhNRiNRjNRkNRlNRmNRnNRoNRpNRqN.t6 ! R! R"]44      t7 ! R# R$]74      t8 ! R% R&]44      t9 ! R' R(]94      t:R) t; ! R* R+]44      t<R, t=R- t>R. t?R/ t@R0 tAR1 tBR2# )rz3.3.0z9This module defines a very preliminary Line Plot example.colors)*)flattenisStr)DrawingGroupRectPolyLinePolygon_SetKeyWordArgs)TypedPropertyCollection
PropHolder
tpcGetItem)Label)
XValueAxis
YValueAxisAdjYValueAxisNormalDateXValueAxis)uSymbol2Symbol
makeMarker)Grid
DoubleGridShadedPolygon)stringWidthgetFont)PlotArea)FillPairedDatac                   (   ] tR t^t]! ]! ]RR7      ]! ]RR7      ]! ]RR7      ]! ]RR7      ]! RR^R7      ]! RR	^R7      ]! RR
^R7      ]! ]	RR7      ]! ]
! ]! RRR4      4      R^R7      ]! ]R^R7      ]! ]! ^ ^^RR4      R^R7      R7      tRtR# )LinePlotPropertieszWidth of a line.desczColor of a line.zDash array of a line.z,Color of infill defaults to the strokeColor.NzWidget placed at data points.r!   advancedUsagezShader Class.zFiller Class.zName of the line.line
joinedLinebarzWhat kind of plot this line isz2Percentage of available width to be used for a barTFzIf true flood fill to x axis)strokeWidthstrokeColorstrokeDashArray	fillColorsymbolshaderfillername	lineStylebarWidthinFill )__name__
__module____qualname____firstlineno__AttrMapAttrMapValueisNumberisColorOrNoneisListOfNumbersOrNoneisStringOrNoneNoneOrOneOfisNumberOrNone_attrMap__static_attributes__r2       ڌC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO CLAUDE\MAESTRO\maestro-backend\venv\Lib\site-packages\reportlab/graphics/charts/lineplots.pyr   r      s    "82DE"=7IJ&'<CZ[ 5cdd)HWXYdqIdqIN1DE f\%(H!IPp  @A  B4hwxyeAa$u5<Zijk
HrB   r   c                   *   a  ] tR t^'t o RR ltRtV tR# )InFillValueNc                <    \         P                  W4      pW#n        V# N)int__new__yValue)clsvrJ   selfs   &&& rC   rI   InFillValue.__new__(   s    {{3!rB   )rJ   rG   )r3   r4   r5   r6   rI   rA   __classdictcell____classdict__s   @rC   rE   rE   '   s      rB   rE   c                   n   a  ] tR t^-t o ]! ]]! ]RR7      ]! ]! ]	^^R7      RR7      R7      t
R tRtV tR# )	ShaderzIf true shade to x axisr    )lohiz(AxisColor, LineColor))BASEverticalr   c                    R R .p\        V RV4      ;'       g    TpV^ ,          '       g   \        VR\        P                  4      V^ &   V^,          '       g   WF^&   R # R # )Nr   r*   )getattrr   white)rM   lpgrowNorowColorrowcs   &&&&&& rC   shadeShader.shade3   sP    $KD!$))ttGB{6<<@QqTttHqTtrB   r2   N)r3   r4   r5   r6   r7   r   r8   	isBoolean
SequenceOfr:   r@   ra   rA   rO   rP   s   @rC   rS   rS   -   s:     H	0IJj!qAH`a
H
% %rB   rS   c                   &   a  ] tR t^9t o R tRtV tR# )NoFillerc                    R # rG   r2   rM   r[   r\   r]   r^   pointss   &&&&&&rC   fillNoFiller.fill:   s    rB   r2   N)r3   r4   r5   r6   rj   rA   rO   rP   s   @rC   rf   rf   9   s      rB   rf   c            	       v   a  ] tR t^=t o Rt]! ]! ]RR7      ]! ]RR7      ]! ]RR7      R7      t	R t
R tR	tV tR
# )Fillerz#mixin providing simple polygon fillzfiller interior colorr    zfiller edge colorzfiller edge widthr*   r(   r'   c                    Wn         R # rG   __dict__)rM   kws   &,rC   __init__Filler.__init__D   s    rB   c                    VP                  \        V\        V R V4      \        V RV4      \        V RR4      R7      4       R# )r*   r(   r'   皙?rn   N)addr   rY   rh   s   &&&&&&rC   rj   Filler.fillG   s;    	gfd;x8]8<]379 	:rB   rp   N)r3   r4   r5   r6   __doc__r7   r8   r:   r?   r@   rs   rj   rA   rO   rP   s   @rC   rm   rm   =   sB     - 5LM"=7JK">8KL
H
: :rB   rm   c                       ] tR t^MtRtR# )ShadedPolyFillerr2   Nr3   r4   r5   r6   rA   r2   rB   rC   r{   r{   M       rB   r{   c                       ] tR t^PtRtR# )
PolyFillerr2   Nr|   r2   rB   rC   r   r   P   r}   rB   r   )AbstractLineChartc                     a  ] tR t^Tt o Rt]! ]]! ]R^R7      ]! ]	R^R7      ]! RRR7      ]! RRR7      ]! RR	R7      ]! ]
R
R7      ]! ]
RR7      ]! RRR7      ]! RRR7      ]! RRR7      ]! RRR7      ]! RR^R7      ]! ]R^R7      ]! ]R^R7      R7      tR t]R 4       t]P                  R 4       tR tR tR tR tR tR t]P.                  ^R3R ltRtV tR# ) LinePlotz}Line plot with multiple lines.

Both x- and y-axis are value axis (so there are no seperate
X and Y versions of this class).
zIf true reverse plot order.r"   z,Distance between a data point and its label.Nz(Handle to the list of data point labels.r    z9Formatting string or function used for data point labels.zHexplicit array of line label values, must match size of data if present.z.Color used for background border of plot area.0Color used for background interior of plot area.zHandle of the lines.zHandle of the x axis.zHandle of the y axis.z2Data to be plotted, list of (lists of) x/y tuples.z<list of callables, will be called with self, xscale, yscale.z If true use separate line group.z#If true use draw grids before axes.)rV   reversePlotOrderlineLabelNudge
lineLabelslineLabelFormatlineLabelArrayr(   r*   lines
xValueAxis
yValueAxisdataannotations
behindAxes	gridFirstc                   \         P                  ! V 4       ^ V n        \        4       V n        \        4       V n        RR.V n        \        \        4      V n
        ^V P                  n        ^V n        \        P                  V P                  ^ ,          n        \        P                   V P                  ^,          n        \        \"        4      V n        RV n        RV n        ^
V n        RV n        . V n        ^ V n        ^ V n        R# )    N)   r   )   r   )      @r   )   r   )      )r   r   r   r   r   r   )r   r   r      )r   rs   r   r   r   r   r   r   r   r   r   r'   joinedLinesr   redr(   bluer   r   r   r   r   _inFillr   r   r   rM   s   &rC   rs   LinePlot.__init__l   s    $ !$,$, 21	
 --?@
!"

$*JJ

1!$*KK

1!1%8#" !
 rB   c                4    V P                   P                  R 8H  # )r%   r   r/   r   s   &rC   r   LinePlot.joinedLines   s    zz##\11rB   c                <    V'       d   R MRV P                   n        R# )r%   r$   Nr   )rM   rL   s   &&rC   r   r      s    /0|f

rB   c                   \        R^4      pRR.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        W#n        ^Vn        RVn        \        P                  Vn        \        P                  VP                  ^ ,          n        \        R4      VP                  ^ ,          n        \        P                   VP                  ^,          n        \        R4      VP                  ^,          n        ^ VP"                  n        ^VP"                  n        ^VP"                  n        ^ VP*                  n        ^VP*                  n        ^VP*                  n        VP-                  V4       V# )z Shows basic use of a line chart.  ,  %2.0fFilledCircleFilledDiamondr   r   r   r   )g      @r   r   )r   r   xyheightwidthr   r   r   r   blackr(   r   r   r   r+   r   r   valueMinvalueMax	valueStepr   rw   )rM   drawingr   r[   s   &   rC   demoLinePlot.demo   s    #s# 23
 Z	$"(**'7"(++'8!"!""#!"!""#BrB   c                   \        V P                  4      V n        \        \	        \        \         V P                  4      4      4      V n        \        4       p. P                  pV P                  P                  pV P                  P                  pV P                  p\        V4      p\        V4       F  w  rx\        V\        4      '       d]   VP                  p	^ T	u;8:  d   V8  d/   M M+W8X  d   \!        RV,          4      hVP#                  Wy34       M\!        RV: RV	: 24      h. P                  p
\        V4       FV  w  rV^ ,          pT
! \%        V4      '       d   V! \'        \)        V4      4      4      MV! V4      V! V^,          4      34       KX  	  V! V
P*                  4       K  	  VP*                  pV F  w  ry\        W',          V	4      W'&   K  	  \        V4      V n        W n        R# )zmWorks out where they go.

Sets an attribute _positions which is a list of
lists of (x, y) matching the data.
z)data row %r may not be paired with itselfz	data row z! is paired with invalid data row N)lenr   _seriesCountmaxlistmap
_rowLengthsetappendr   scaler   	enumerate
isinstancer   other
ValueErrorrw   r   mktimemkTimeTuple__self___pairInFills
_positions)rM   pairsPxscaleyscaler   nr]   r_   r   r$   colNodatumxvs   &             rC   calcPositionsLinePlot.calcPositions   sz     		Nd3s499#567II&&&&yyI#D/JE#~..		e:A:|()TW\)\]]IIum,$Y^`e%fgg99D )#1X7<RyyF6+b/23fRj58$ !/ dmm% *& JJ "LE%ahu5AH "JrB   c                   V P                   pV P                  V,          V,          ^,          pVf   RpM\        V\        4      '       d,   VR8X  d   V P                  V,          V,          pMSWV,          pMJ\        VR4      '       d'   \        VR4      '       g
   V! V4      pMV! WW#V4      pM\        RV,          4      hV'       d   V P                  W3,          pVP                  '       g   R# V^ 8  d$   VP                  W4V P                  ,           4       M"VP                  W4V P                  ,
          4       VP                  V4       V# RpV# )z*Draw a label for a given item in the list.Nvalues__call____labelFmtEX__z6Unknown formatter type %s, expected string or function)r   r   r   strr   hasattrr   r   visible	setOriginr   setText)	rM   r]   r   r   r   labelFmt
labelValue	labelTextlabels	   &&&&&    rC   _innerDrawLabelLinePlot._innerDrawLabel   s    ''YYu%e,Q/
I%%8# //6u=	$1	Xj))8$455$Z0	$T:	UW__``OOUN3E===&1ut':':#:;t':':#:;MM)$  ErB   c                H    VP                  V P                  W#WE4      4       R# )zDDraw a label for a given item in the list.
G must have an add methodN)rw   r   )rM   Gr]   r   r   r   s   &&&&&&rC   	drawLabelLinePlot.drawLabel  s     	
d""5q34rB   c                8   \        4       pV P                  pV P                  p\        V R R4      pV'       d-   \	        VP
                  VP
                  4      pVP                  pV P                  pV P                  p\        V RR4      p	V P                  p
\        V
4      pV	'       g_   V P                  '       gM   \        \        V4      4       Uu. uF'  p\        WV,          ,          RR4      '       g   K%  VNK)  	  up'       d[   \        V	RR4      pVf   VP                  pMVP                  V4      pVP                  pWP                   ,           p\        V RV4      pRp\        V RV4      p\        \        V4      4      pV P"                  '       d   \%        V4      pV EF  pW,          pW,          pV
V,          p\        VRR4      p\        VR	R4      p\        VR
V4      p\        VRV	4      p\        VRR4      p\        VRR4      p\'        VR	4      '       d   VP(                  pM!\'        V
R	4      '       d   V
P(                  pMRpVR8X  Ed   VEf!   \+        \-        \        V4      4      ^,
          pV^ 8  d   V P.                  V,          ^,
          MV P.                  p\        VR\1        ^24      4      pV P                  pVP                  ^ 4      p \+        VP                  V 4      p!\	        VP                  VP                   ,           V 4      p"V P                  P                  p#V#V P                  P                   ,           p$\3        V\0        4      '       d   VVR,          ,          pM	VR,          pV F  w  pp%Tp&V%X 8  d   X"MX!p'VV&^,          ,          pVX#8  d   V&V#V,
          ,          p&T#pMVV&,           X$8  d   V&V$V,
          ,          p&VP5                  \7        VV'V&V%V',
          VVVR7      4       K  	  EM8VR8X  Ed1   \9        V4      p(V'       g   \3        V\:        4      '       d   \        VRR4      p)\3        V\:        4      '       d.   V(\9        \%        VVP<                  ,          4      4      ,           p*MXX.V(,           XV.,           p*V)'       d   V)P?                  V XVVV*4       M1XP5                  \A        T*TVV8X  d   TMRT;'       g    RR7      4       V'       d   V^8X  g   VV8w  d?   \C        V(V^ ^R7      p+V'       d   VV+n        V'       d   VV+n"        VP5                  V+4       \'        VR4      '       d   VPF                  p,M!\'        V
R4      '       d   V
PF                  p,MRp,V,'       d   V'       d   V PH                  V,          p-\K        V4       F  w  p.p/VV.3V
9   d   \        V
VV.3,          RV,4      p0MT,p0V0V,J d   T,p1Tp2MT0p1\        V1R
V4      p2\M        \O        V1V.4      V/^ ,          V/^,          V24      p1V1'       g   Kr  V'       d+   XX-V.,          ^,          X,          R,          ,          V1n(        VP5                  V14       K  	  MV'       d   V PH                  V,          p-\K        V4       F  w  p.p/\        V
VV.3,          RR4      p0V0'       g   K&  \        V0R
\        V0RV4      4      p2\M        V0V/^ ,          V/^,          V24      p1V1'       g   Kd  V'       d+   XX-V.,          ^,          X,          R,          ,          V1n(        VP5                  V14       K  	  \K        V4       F  w  p3p4V4w  p5p6V PS                  WV3V5V64       K!  	  \        VRR4      p7V7'       g   EK  V7PU                  WVVV4       EK  	  V# u upi )_bubblePlotNr   r1   FrJ   _inFillG_lineGr(   r'   r*   r)   r/   r&   r0   g{Gzt?      ?)r'   r(   r*   r%   r-   rv   rn   )r(   strokeLineCapstrokeLineJoinr+   r,   )+r   r   r   rY   min_bubbleRadius
_bubbleMaxr   r   r   r   r   range_yr   _x_lengthr   reversedr   r'   r   r   r   
Percentager   rw   r	   r   r   r   rj   r   r
   r)   r+   r   r   r   r   sizer   ra   )8rM   r\   yAxA
bubblePlotbubbleR	bubbleMaxr   r   r   r   
styleCountr]   inFillYinFillX0inFillX1inFillGbwlGRr_   
styleRowNorowStyler(   r'   r*   r1   dashr/   r   r   r0   y0byposbynegxminxmaxr   w_y0ri   r-   fpointsr$   uSymboldrowjxyjuSymbolr+   symColorr   r   x1y1r,   s8   &                                                       rC   	makeLinesLinePlot.makeLines  sc   G____T-5
"**2+;+;<GI''OO$y.

Z
t((($)#a&M LM5"5z)9#:8EJ M L L ght4G%%((7+uuH**,Hd:a0GT(1%#a&M   hqk!E(C+JZ(H!(=>K!(=>K+{CIXhw7F8%6=DT:Ix// ,,..)) %:CAJ!+A/0s$**Q,*

B&x
:b>JHABRLEQYYr2E??--D$//"9"99D!(:66hun,%c\DAqA#$R4%UC1HAvTAX 1tTAXEE$qQquQ\gpqr   L( ZN;;$Xx>F!#n55"(78AciiL3I+J"J#+G"4v"='@R"RDyIGGicnpycyT_  @D  QV  Q]  Q]  Z]  %^  _k9.D#F{QRbcdD+0(/3,FF4Lx**"//)),,dii&6t%cNDAb"1~.#*5A+>x#P#*7*!(#.!)#*6+k#J+Jva,@Ar!uXVFv%*1471:i3G#2M*MFKf +" dii&6t%cNDAb&uZ\':8DIH#X&xGH][f<ghH+HRU2a5JFv%*1471:i3G#2M*MFKf +  )~eBqB7  . Xx6Fvv||D5SAY \ }Ls   "^7^c                
   V P                   pV P                  p\        V R R4      '       d   ^;Vn        Vn        VP	                  V P
                  V P                  V P                  4       V'       d   W!n        V'       d   Wn        VP                  V P                  4       VP                  ^ 4      pW0P                  V P                  ,           8  g   W0P                  8  d   V P                  pMTpVP	                  V P
                  W@P                  4       VP                  V P                  4       V P                  4        \        4       pVP                  V P!                  4       4       V P"                  '       g   V P$                  '       d   VP'                  4        V P"                  '       d+   \        4       V n        VP                  V P(                  4       V P$                  '       d+   \        4       V n        VP                  V P*                  4       VP'                  4        VP'                  4        VP,                  ;'       d    VP.                  .;'       g    . pVP,                  ;'       d    VP0                  .;'       g    . p\        VRR4      pVR8w  dV   VR	9   d-   VP3                  VP0                  VP4                  ,           4       VR
9   d   VP3                  VP0                  4       \        VRR4      pVR8w  dV   VR	9   d-   VP3                  VP.                  VP4                  ,           4       VR
9   d   VP3                  VP.                  4       V P6                  '       d=   VP9                  WPVP:                  VR7       VP9                  WPVP:                  VR7       VP                  VP=                  4       4       VP                  VP=                  4       4       V P6                  '       gg   \        VRR4      p	\        VRR4      p
V	'       g   VP9                  WPVP:                  VR7       V
'       g   VP9                  WPVP:                  VR7       \        V R. 4      pV FD  p\        VRR4      '       g   K  VP                  V! WP                  VP                  4      4       KF  	  VP                  V P?                  4       4       V P6                  '       gM   X	'       d   VP9                  WPVP:                  VR7       X
'       d   VP9                  WPVP:                  VR7       V FD  p\        VRR4      '       d   K  VP                  V! WP                  VP                  4      4       KF  	  V# )r   NskipGridnone)parentdimexcludedrawGridLastFr   beforeLines)bothtop)r%  bottom) r   r   rY   r   setPositionr   r   r   joinAxis	configurer   r   r   r   r   rw   makeBackgroundr   r   _joinToAxisr   r   visibleAxisr   r   r   r   r   makeGridgetGridDimsdrawr  )rM   r   r   xAxisCrossesAtr   r\   xAexyAexr  xAdglyAdglr   as   &            rC   r0  LinePlot.draw  s   ____4d++.//BNR^
tvvtvvt{{3R{R{
TYY !fft{{228OAA
tvvq**-
TYYG	d!!#$<<<4???NN||| %dmm$#gdkk"

~~))255'//R~~))255'//R2j0T>>)BEE"**,-,,BEE"2j0T>>)BEE"**,-,,BEE">>>KK"..KFKK"..KF	bggi	bggi~~~B~e4EB~e4E"++at+T"++at+Td=4Aqt,,aXXbhh/0  	
dnn~~~bkk!BNN4kPbkk!BNN4kPA1]400aXXbhh/0  rB   Tc                   aaaaa
a ^ RI Ho
Ho \        V R. 4       Uu. uF  p\        VRR4      V8w  g   K  VNK  	  ppV
VVVVV3R lp	Win        VP                  V	4       Wn        R# u upi )r   )r   Liner   r.   Nc                 h  < V! S4      pV! S4      pS! 4       pVP                   pVP                  S	! VP                  WFP                  VP                  ,           VS
SR 7      4       VP                   pVP                  S	! W7P                  W7P                  VP                  ,           S
SR 7      4       V# ))r(   r'   )r   rw   r   r   r   )rM   xScaleyScaler   r   r\   r   r   r   r9  r(   r'   r   yvs   &&&     rC   
annotation)LinePlot.addCrossHair.<locals>.annotation  s    r
Ar
AABEE$ruuQuuRZZ/kVabcBEE$qqrzz!1kVabcHrB   )reportlab.graphics.shapesr   r9  rY   r$  r   r   )rM   r.   r   r=  r(   r'   r$  r6  r   r>  r   r9  s   &&ffff&   @@rC   addCrossHairLinePlot.addCrossHair  se    9")$}R"@a"@QGAfUYDZ\`D`qq"@a	 	 "-:&& bs
   A)A))r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r3   r4   r5   r6   ry   r7   r   r8   rc   r9   r:   r@   rs   propertyr   setterr   r   r   r   r  r0  r   r   rA  rA   rO   rP   s   @rC   r   r   T   s2    
 H'	8Udef%h5crst!$-WX&t2mn%d1{|"=7gh 5ghT(>?!$-DE!$-DED'[\"4.l{|}!)2Tcde 1Vefg
H$%N 2 2 = =$N)V D5
N`CJ 28!X\ ' 'rB   r   c                      a  ] tR tRt o ]! ]]! ]RR7      ]! ]RR7      ]! ]RR7      ]! ]RR7      R7      tRt	Rt
^
t^tR	 tR
 tR tR tRtV tR# )
LinePlot3Di  zdx/dzr    zdy/dzzdepth of an individual serieszz gap around series)rV   theta_xtheta_yzDepthzSpacer   c                j   \         P                  V 4       V P                  pV P                  pV P                  pV P
                  P                  R 8X  d   W,          V^,           V,          ,           pMV^V,          ,           pV P                  V,          V n        V P                  V,          V n
        R# )parallel_3dN)r   r   r   rJ  rI  r   stylerG  _3d_dxrH  _3d_dy)rM   nSeriesrJ  rI  	_3d_depths   &    rC   r   LinePlot3D.calcPositions  s    t$##??  -/	6'99I6)Ill9,ll9,rB   c                    V P                   pV P                  P                  R 8X  d#   WP                  V,           ,          V,           pV# TpV# )rL  )rJ  r   rM  rI  )rM   r]   rJ  z0s   &&  rC   _calc_z0LinePlot3D._calc_z0  sF    ??  -/F*+F2B 	 B	rB   c                f    WV P                   ,          ,           W#V P                  ,          ,           3# rG   )rG  rH  )rM   r   r   zs   &&&&rC   _zadjustLinePlot3D._zadjust  s#    4<<T\\>!111rB   c                d   \        V R R4      pV'       d   Q R4       hV P                  pV P                  p\        \	        \        V4      4      4      pV P                  '       d   VP                  4        \        V RR4      pV'       d   Q R4       hT P                  pV P                  pV P                  pV P                  p	^ RIHp
 V
! 4       p^ RIHpHp V P"                  P$                  R8w  d   \        V R^4      p\        V R	R4      '       do   ^ R
IHp \        \)        W4      4      pV! VVR7      pRpV F?  w  ppppVV8w  d   Tp^ pM	X^,          pVV,          P+                  VV,           VV34       KA  	  RpMTpMRpTp\        V P,                  4      pV EFF  pVV,          p\        V4      pV P,                  VV,          ,          pVP.                  p\        VRR4      pV P1                  V4      pVV,           p \3        VR4      '       d   VP4                  p!M5\3        V P,                  R4      '       d   V P,                  P4                  p!MRp!V P6                  '       da   V'       dY   VV,          p"V"^ ,          w  p#p$\	        ^\        V"4      4       F*  p%V"V%,          w  p&p'V! VV#V&V$V'VV WVRVRRRRR7       T&T'p$p#K,  	  \3        VR4      '       d   VP8                  p(M5\3        V P,                  R4      '       d   V P,                  P8                  p(MRp(V('       d`   V FY  p)VX%,          w  p&p'V! V&V'V4      w  p&p'\;        V(V)^ ,          V)^,          V4      p*V*'       g   KB  VP=                  ^VVV&V'V*34       K[  	  \	        V4       FQ  p%VV%,          w  p&p'V! V&V'V4      w  p&p'V P?                  VV%V&V'4      p+V+'       g   K:  VP=                  ^VVV&V'V+34       KS  	  EKI  	  VPA                  4        \C        4       p,VPE                  4        F  p-V,P=                  V-R,          4       K  	  V,# )r   Nz$_bubblePlot not supported for 3d yetr   zinFill not supported for 3d yet)
_FakeGroup)_make_3d_line_infofind_intersectionsrL  _3d_tilewidth_find_intersections)copy)smallr)   r'   rv   )fillColorShaded	tileWidthr(   r'   r)   shadingr+   )#rY   r   r   r   r   r   r   reverserI  rY  rG  rH  $reportlab.graphics.charts.linechartsr\  !reportlab.graphics.charts.utils3dr]  r^  r   rM  ra  r   insertr   r(   rU  r   r'   r   r+   r   rw   r   sortr   value).rM   r   r   	positionsr   r1   rI  rY  rG  rH  r\  Fr]  r^  rd  ra  
fpositionsIicir  r   r   jcr   r]   r_   r   r	  r^   r
  rT  z1r   frowx0r  r   r  r  r  r  r+   Lr\   rL   s.   &                                             rC   r  LinePlot3D.makeLines  s   T-5
EEE~ ''OO	s9~&'   !))+i-<<<z ==,,,,CL\??  -/_Q7It1$77%!#d"56
&z	B GAa!1uAqM((2qe4  ! !	&
I"J _
EE"CCAzz%*"45H++H8%6=Du%BfBx// ,,]33

.. %e,D!!WFB!&qT!3!%eB*Ar2r2r2 ' ($),0dTX(+	-
 "$RBB "4 x**"//X..**++B ZFB%bB/FB+GBqE"Q%IFvquua2bF%;<	  qUB!"R+B((r2>1aeeQr"R1-.	 "[ f 	
GAAEE!B%LrB   )rN  rO  N)r3   r4   r5   r6   r7   r   r8   r9   r@   rG  rH  rI  rJ  r   rU  rY  r  rA   rO   rP   s   @rC   rF  rF    sl     Hxg6xg6h-LMh-BC	
H GGFF
-2j jrB   rF  c                   *   a  ] tR tRt o RtR tRtV tR# )SimpleTimeSeriesPloti  zkA customized version of LinePlot.
It uses NormalDateXValueAxis() and AdjYValueAxis() for the X and Y axes.
c                    \         P                  V 4       \        4       V n        \	        4       V n        \        V n        R # rG   )r   rs   r   r   r   r   _monthlyIndexDatar   r   s   &rC   rs   SimpleTimeSeriesPlot.__init__  s*    $.0$,%	rB   r   r   r   N)r3   r4   r5   r6   ry   rs   rA   rO   rP   s   @rC   rz  rz    s     & &rB   rz  c            	       p   a  ] tR tRt o Rt]! ]]! RRR7      ]! ]RR7      R7      t	R t
RR	 ltR
 tRtV tR# )GridLinePloti  a  A customized version of SimpleTimeSeriesSPlot.
It uses NormalDateXValueAxis() and AdjYValueAxis() for the X and Y axes.
The chart has a default grid background with thin horizontal lines
aligned with the tickmarks (and labels). You can change the back-
ground to be any Grid or ShadedRect, or scale the whole chart.
If you do provide a background, you can specify the colours of the
stripes with 'background.stripeColors'.
Nz3Background for chart area (now Grid or ShadedRect).r    z&Scalefactor to apply to whole drawing.)rV   
backgroundscaleFactorc                &   ^ RI Hp \        P                  V 4       RV n        \        4       V n        RV P                  n        ^ V P                  n        ^V P                  n	        RV P                  n
        VP                  V P                  n        R# )r   r   N
horizontalr   )reportlab.libr   rz  rs   r  r   r  orientationuseRectsuseLinesr'   r   r(   )rM   r   s   & rC   rs   GridLinePlot.__init__  sd    (%%d+&&2##$ #$ &)#&,ll#rB   c           	        ^ RI Hp V'       g   \        R^4      p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        \        Vn	        ^Vn
        VP                  Vn        VP                  ! ^d^A^ ^R^dR7      pWCP                  ^ ,          n        ^VP                  ^ ,          n        RVP                  ^ ,          n        VP                  ! ^ ^O^[^ R^dR7      pWSP                  ^,          n        ^VP                  ^,          n        ^^.VP                  ^,          n        ^
VP"                  P$                  n        RVP"                  P$                  n        R	VP"                  P$                  n        RVP"                  P$                  n        ^ VP"                  P$                  n        RVP"                  P$                  n        R
VP"                  n        RVP4                  n        ^VP4                  n        ^
VP4                  P$                  n        \;        4       Vn        VP>                  VP@                  .VP<                  n!        RVP<                  n"        VPG                  VR4       V# )r   r   r   r   zPANTONE 288 CV)spotNamedensityNzPANTONE Wm Red CVstartr  z	{mm}/{yy}z%5d%% rW   plotii)$r  r   r   r  r   r   r   r   r|  r   r   r   r(   
PCMYKColorr   r'   r)   r   labelsfontSize
textAnchor	boxAnchorangledxdyxLabelFormatr   labelTextFormattickLeftr   r  pink	lightbluestripeColorsr  rw   )rM   r   r   r[   c0c1s   &&    rC   r   GridLinePlot.demo  s   (c3'G^	#s2a5EsS"$"#&*#qBq3FPST"$"#'(e#(*%*1'),&%(""#"$%0"(0%!"(*%&,kk63C3C%D"$.!BvrB   c                   V P                   V P                  r!V'       d   W!n        V'       d   Wn        VP                  V P                  V P
                  V P                  4       VP                  V P                  4       VP                  ^ 4      pW0P
                  V P                  ,           8  g   W0P
                  8  d   V P
                  pMTpVP                  V P                  W@P                  4       VP                  V P                  4       V P                  p\        V\        4      '       Edk   VP                  R8X  d   VP                  '       d   \!        \#        VP                  VP$                  .VP                  ,           4      4      p. p\'        \)        V4      ^,
          4       F.  pVP+                  Wh^,           ,          Wh,          ,
          4       K0  	  Wun        EMVP                  R8X  d   VP                  '       d   \!        \#        VP                  VP$                  .VP                  ,           4      4      p	. p\'        \)        V	4      ^,
          4       F.  pVP+                  W^,           ,          W,          ,
          4       K0  	  Wun        EM\        V\.        4      '       Ed   V P                  VP0                  n        V P
                  VP0                  n        V P                  VP0                  n
        V P                  VP0                  n        V P                  VP2                  n        V P
                  VP2                  n        V P                  VP2                  n
        V P                  VP2                  n        VP0                  P                  R8X  d   VP                  '       d   \!        \#        VP                  VP$                  .VP                  ,           4      4      p. p\'        \)        V4      ^,
          4       F.  pVP+                  Wh^,           ,          Wh,          ,
          4       K0  	  WuP0                  n        MVP0                  P                  R8X  d   VP                  '       d   \!        \#        VP                  VP$                  .VP                  ,           4      4      p	. p\'        \)        V	4      ^,
          4       F.  pVP+                  W^,           ,          W,          ,
          4       K0  	  WuP0                  n        VP2                  P                  R8X  d   VP                  '       d   \!        \#        VP                  VP$                  .VP                  ,           4      4      p. p\'        \)        V4      ^,
          4       F.  pVP+                  Wh^,           ,          Wh,          ,
          4       K0  	  WuP2                  n        MVP2                  P                  R8X  d   VP                  '       d   \!        \#        VP                  VP$                  .VP                  ,           4      4      p	. p\'        \)        V	4      ^,
          4       F.  pVP+                  W^,           ,          W,          ,
          4       K0  	  WuP2                  n        V P5                  4        V P                  V P                  V P6                  rp
V'       d   V^8w  d   V^ ^ V^ ^ 3Xn        M
\;        4       pVP=                  V P?                  4       4       VP=                  V P                   4       VP=                  V P                  4       VP=                  V PA                  4       4       V# )r   rW   r  )!r   r   r)  r(  r   r   r   r*  r   r   r   r  r   r   r  _tickValuesr   r   	_valueMinr   r   r   
deltaStepsr   grid0grid1r   r  	transformr   rw   r+  r  )rM   xvayvar1  r   backxposstepsrr  yposr   r   r  r\   s   &             rC   r0  GridLinePlot.draw  s   ??DOOSss4dii  1fft{{228OAA::.dii dD!!:-#///C		CMM?S__+LMNs4y{+ALLcTW!45 ,"'!!\1coooC		CMM?S__+LMNs4y{+ALLcTW!45 ,"'j))66DJJL66DJJL#zzDJJ $DJJ66DJJL66DJJL#zzDJJ $DJJ zz%%3C		CMM?S__+LMNs4y{+ALLcTW!45 ,(-

%''<7COOOC		CMM?S__+LMNs4y{+ALLcTW!45 ,(-

%zz%%3C		CMM?S__+LMNs4y{+ALLcTW!45 ,(-

%''<7COOOC		CMM?S__+LMNs4y{+ALLcTW!45 ,(-

%%)ZZd>N>N{;>&1k!A>AKA	d!!#$	doo	doo	dnnrB   )r  r  rG   )r3   r4   r5   r6   ry   r7   r   r8   r?   r@   rs   r   r0  rA   rO   rP   s   @rC   r  r    sE      H!$-bc">8`a
H
	3"HT TrB   r  c                   0   a  ] tR tRt o RtR tR tRtV tR# )AreaLinePlotig  z@we're given data in the form [(X1,Y11,..Y1M)....(Xn,Yn1,...YnM)]c                ^    \         P                  V 4       ^V n        ^V n        . ROV n        R# )r   N))r      d      )r      2      )r   r  F   (   )r   rs   r   r   r   r   s   &rC   rs   AreaLinePlot.__init__i  s&    $ !=	rB   c                    V P                   p\        V4      p\        V^ ,          4      pV^ .,          p. V n         \        ^V4       Fv  p. p\        V4       FG  pWG,          W,          V,          ,           WG&   VP                  W,          ^ ,          WG,          34       KI  	  V P                   P                  V4       Kx  	  \        P                  V 4      Wn         #   XT n         i ; i)r   )r   r   r   r   r   r0  )rM   odatar   mSrr  Dr  s   &       rC   r0  AreaLinePlot.drawo  s    	IIEE
AE!HA1#ADI1QZqA4%(1+-ADHHehqk!$/0 " 		  #   ==&IDIs   CC 	C&)r   r   r   N)	r3   r4   r5   r6   ry   rs   r0  rA   rO   rP   s   @rC   r  r  g  s     J> rB   r  c                   &   a  ] tR tRt o R tRtV tR# )SplitLinePloti  c                *   \         P                  V 4       \        4       V n        \	        4       V n        . RNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@NRANRBNRCNRDNRENRFNRGNRHNRINRJNRKNRLNRMNRNNRONRPNRQNRRNRSNRTNRUNRVNRWNRXNRYNRZNR[NR\NR]NR^NR_NR`NRaNRbNRcNRdNReNRfNRgNRhNRiNRjNRkNRlNRmNRnNRoNRpNRqNRrNRsNRtNRuNRvNRwNRxNRyNRzNR{NR|NR}NR~NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNV n        RV P
                  n        ^ V P
                  n        ^ V P
                  n	        ^ V P
                  n
        \        P                  ! R4      V P                  ^ ,          n        \        P                  ! R4      V P                  ^,          n        \        P                  ! R4      V P                  ^,          n        R# )鉤1Ni3  iÙ i3  )r  ffffff?皙?        )i1r  r  r  )iQ1r  r  r  )i1r  r  r  )i1r  r  r  )i}1r  r  r  )i1r  r  r  )i1r  r  r  )i	1r  r  r  )im1r  r  r  )i1r  r  r  )i51r  r  r  )i1r  r  r  )i1r  r  r  )ia1r  r  r  )i1r  r  r  )i)1r  r  r  )i1r  r  r  )i1r  r  r  )i1r  r  r  )i1r  r  r  )i}1r  r  r  )i1r  r  r  )iE1r  r  r  )i1r  r  r  )i1r  r  r  )iq1r  r  r  )i1r  r  r  )i91r  r  r  )i1r  r  r  )i1r  r  r  )i2r  r  r  )i)2r  r  r  )i2r  r  r  )i2r  r  r  )iU2r  r  r  )i2r  r  r  )i2r  r  r  )i2r  r  r  )i2r  r  r  )iI2r  r  r  )i2r  r  r  )i2r  r  r  )i>2r  r  r  )i9?2r  r  r  )i?2r  r  r  )i@2r  r  r  )ie@2r  r  r  )i@2r  r  r  )i-A2r  r  r  )iA2r  r  r  )iA2r  r  r  )iYB2r  r  r  )iB2r  r  r  )i!C2r  r  r  )ie2r  r  r  )iIf2r  r  r  )if2r  r  r  )ig2r  r  r  )iug2r  r  r  )ig2r  r  r  )i=h2r  r  r  )ih2r  r  r  )ii2r  r  r  )iii2r  r  r  )ii2r  r  r  )i1j2r  r  r  )i2r  r  r  )iY2Q?
ףp=
?r  )i2r  r  r  )i!2r  r  r  )i2r  r  r  )i2r  r  r  )iM2r  r  r  )i2r  r  r  )i2r  r  r  )iy2r  r  r  )iݐ2r  r  r  )iA2r  r  r  )i2r  r  r  )ii2Q?RQ?r  )iʹ2r  r  r  )i12r  r  r  )i2r  r  r  )i2r  r  r  )i]2r  r  r  )i2r  r  r  )i%2r  r  r  )i2r  r  r  )i2r  r  r  )iQ2r  r  r  )i2r  r  r  )iy2
ףp=
?Q?r  )i2r  r  r  )iA2r  r  r  )i2r  r  r  )i	2r  r  r  )im2r  r  r  )i2r  r  r  )i52r  r  r  )i2r  r  r  )i2r  r  r  )ia2r  r  r  )i%3r  r  r  )i3(\?Gz?r  )i3r  r  r  )iQ3r  r  r  )i3r  r  r  )i3r  r  r  )i}3r  r  r  )i3r  r  r  )iE3r  r  r  )i3r  r  r  )i3r  r  r  )iq3r  r  r  )i5)3r  r  r  )i)3)\(?Q?r  )i)3r  r  r  )ia*3r  r  r  )i*3r  r  r  )i)+3r  r  r  )i+3r  r  r  )i+3r  r  r  )iU,3r  r  r  )i,3r  r  r  )i-3r  r  r  )i-3r  r  r  )iEP3r  r  r  )iP3
ףp=
?r   Q?)iQ3r  r   r  )iqQ3r  r   r  )iQ3r  r   r  )i9R3r  r   r  )iR3r  r   r  )iS3r  r   r  )ieS3r  r   r  )iS3r  r   r  )i-T3r  r   r  )iT3r  r   r  )iUw3r  r   r  )iw3333333?=
ףp=?(\?)ix3r  r  r  )ix3r  r  r  )ix3r  r  r  )iIy3r  r  r  )iy3r  r  r  )iz3r  r  r  )iuz3r  r  r  )iz3r  r  r  )i={3r  r  r  )i{3r  r  r  )ie3r  r  r  )iɞ3p=
ף?r  RQ?)i-3r  r  r  )i3r  r  r  )i3r  r  r  )iY3r  r  r  )i3r  r  r  )i!3r  r  r  )i3r  r  r  )i3r  r  r  )iM3r  r  r  )i3r  r  r  )iu3r  r  r  )i3皙?r  r   )i=3r  r  r   )i3r  r  r   )i3r  r  r   )ii3r  r  r   )i3r  r  r   )i13r  r  r   )i3r  r  r   )i3r  r  r   )i]3r  r  r   )i3r  r  r   )i3r  r  r   )i3p=
ף?Gz?r   )iM3r  r  r   )i3r  r  r   )i3r  r  r   )iy3r  r  r   )i3r  r  r   )iA3r  r  r   )i3r  r  r   )i	3r  r  r   )im3r  r  r   )i3r  r  r   )i4r  r  r   )i4rv   皙?r   )i]4rv   r  r   )i4rv   r  r   )i%4rv   r  r   )i4rv   r  r   )i4rv   r  r   )iQ4rv   r  r   )i4rv   r  r   )i4rv   r  r   )i}4rv   r  r   )i4rv   r  r   )i:4rv   r  r   )r  rs   r   r   r   r   r   requiredRangeleftAxisPercentleftAxisOrigShiftMinleftAxisOrigShiftIPCr   toColorr   r(   r   s   &rC   rs   SplitLinePlot.__init__  s   d#.0'/ xM+  xM,D  xME]  xM^v  xM  xP  xM  Qi  xM  jB  xM  C[  xM  \t  xM  uM  xM  Nf  xM  g  xM  @X  xM  Yq  xM  rJ  xM  Kc  xM  d|  xM  }U  xM  Vn  xM  oG  xM  H`  xM  ay  xM  zR	  xM  S	k	  xM  l	D
  xM  E
]
  xM  ^
v
  xM  w
O  xM  Ph  xM  iA  xM  BZ  xM  [s  xM  tL  xM  Me  xM  f~  xM  W  xM  Xp  xM  qI  xM  Jb  xM  c{  xM  |T  xM  Um  xM  nF  xM  G_  xM  `x  xM  yQ  xM  Rj  xM  kC  xM  D\  xM  ]u  xM  vN  xM  Og  xM  h@  xM  AY  xM  Zr  xM  sK  xM  Ld  xM  e}  xM  ~V  xM  Wo  xM  pH  xM  Ia  xM  bz  xM  {S  xM  Tl  xM  mE  xM  F^  xM  _w  xM  xP  xM  Qi  xM  jB  xM  C[  xM  \t  xM  uM  xM  Nf  xM  g  xM  @X  xM  Yq  xM  rJ  xM  Kc  xM  d|  xM  }U   xM  V n   xM  o G!  xM  H!`!  xM  a!y!  xM  z!R"  xM  S"k"  xM  l"D#  xM  E#]#  xM  ^#v#  xM  w#O$  xM  P$h$  xM  i$A%  xM  B%Z%  xM  [%s%  xM  t%L&  xM  M&e&  xM  f&~&  xM  &W'  xM  X'p'  xM  q'I(  xM  J(b(  xM  c({(  xM  |(T)  xM  U)m)  xM  n)F*  xM  G*_*  xM  `*x*  xM  y*Q+  xM  R+j+  xM  k+C,  xM  D,\,  xM  ],u,  xM  v,N-  xM  O-g-  xM  h-@.  xM  A.Y.  xM  Z.r.  xM  s.K/  xM  L/d/  xM  e/}/  xM  ~/V0  xM  W0o0  xM  p0H1  xM  I1a1  xM  b1z1  xM  {1S2  xM  T2l2  xM  m2E3  xM  F3^3  xM  _3w3  xM  x3P4  xM  Q4i4  xM  j4B5  xM  C5[5  xM  \5t5  xM  u5M6  xM  N6f6  xM  g66  xM  @7X7  xM  Y7q7  xM  r7J8  xM  K8c8  xM  d8|8  xM  }8U9  xM  V9n9  xM  o9G:  xM  H:`:  xM  a:y:  xM  z:R;  xM  S;k;  xM  l;E<  xM  F<_<  xM  `<y<  xM  z<S=  xM  T=m=  xM  n=G>  xM  H>a>  xM  b>{>  xM  |>U?  xM  V?o?  xM  p?I@  xM  J@c@  xM  d@z@  xM  {@QA  xM  RAhA  xM  iAA  xM  @BVB  xM  WBmB  xM  nBDC  xM  EC[C  xM  \CrC  xM  sCID  xM  JD`D  xM  aDwD  xM  xDPE  xM  QEiE  xM  jEBF  xM  CF[F  xM  \FtF  xM  uFMG  xM  NGfG  xM  gGG  xM  @HXH  xM  YHqH  xM  rHJI  xM  KIcI  xM  dIzI  xM  {IQJ  xM  RJhJ  xM  iJJ  xM  @KVK  xM  WKmK  xM  nKDL  xM  EL[L  xM  \LrL  xM  sLIM  xM  JM`M  xM  aMwM  xM	(,%*+'/0,/0,$*NN8$<

1!$*NN8$<

1!$*NN8$<

1!rB   r~  N)r3   r4   r5   r6   rs   rA   rO   rP   s   @rC   r  r    s     = =rB   r  c           	         \        V \        \        34      '       g   V 3p V  Uu. uF  q3'       g   K  VNK  	  p pT ;'       d0    \        \        \	        \
        W3R lV 4      4      4      ;'       g    ^ # u upi )z0return max stringWidth for the list of strings Tc                     V! WV4      # rG   r2   )tsWfNfSs   &&&&rC   <lambda>_maxWidth.<locals>.<lambda>  s    PRSTXZP[rB   )r   tupler   r   r   r   )TfontNamer  _fs   &&& rC   	_maxWidthr    sd    at%%A4qa2aA``T#+[\]^_`eedee 	s
   	A5A5c                     a  ] tR tRt o Rt]! R,/ R]bR]! ]RR7      bR]! ]RR7      bR	]! ]	R
R7      bR]! ]
RR7      bR]! ]R^R7      bR]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]
RR7      bR]! ]
RR7      bR]! ]RR7      bR ]! ]R!R7      bR"]! ]R#R7      bR$]! ]R%R7      b tR& tR' tR-R) ltR* tR+tV tR(# ).ScatterPloti  zA scatter plot widgetrV   r   z!Width of the area inside the axesr    r   z"Height of the area inside the axesouterBorderOnz/Is there an outer border (continuation of axes)outerBorderColorzColor of outer border (if any)labelOffsetz.Space between label and Axis (or other labels)r"   axisTickLengthszLenth of the ticks on both axesaxisStrokeWidthzStroke width for both axesxLabelzLabel for the whole X-AxisyLabelzLabel for the whole Y-Axisr   z#Data points - a list of x/y tuples.r(   z#Color used for border of plot area.r*   r   leftPaddingzPadding on left of drawingrightPaddingzPadding on right of drawing
topPaddingzPadding at top of drawingbottomPaddingzPadding at bottom of drawingc                   \         P                  V 4       ^V n        ^MV n        ^V n        \
        P                  V n        RV n        ^p^pRpRV P                  n
        RV P                  n        RV P                  n        RV P                  n        RV n        ^V P                  P                   n        RV n        ^V P                  P                   n        . ROV n        ^ V n        ^V n        ^
V n        ^V n        ^V n        V P*                  V,           V^,          ,           V n        V P2                  \5        \7        V P                  P                  4      V P                  P                   P8                  V P                  P                   P"                  4      ,           V n        V P0                  V,           V,           V P                  P                   P"                  ,           V n        V) V P                  P                   n        W P                  n        W0P                  n         RV P                  n!        V) V P                  P                   n"        W P                  n#        W0P                  n         RV P                  n!        RV n$        ^V PJ                  n        RV PJ                  n&        RV PJ                  n"        ^ V n'        \Q        R	^R
7      V PR                  n*        \Q        R^R
7      V PR                  ^,          n*        \Q        R^R
7      V PR                  ^,          n*        \
        PV                  V PR                  ^,          n,        R# )   Nr   z%szX LablezY Labler%  z%.2fer   )r   r   FilledSquare)))gQ?g=
ףp]O@)gl?gX9v.K@)g~jt?gX91@))g(\?gˡE='@)gx&1?g rhI@)g+?gE<Q@))gv?gFԸU@)gMb?g
ףp=A@)gK7A?gfffffB@)-r   rs   r   r   r  r   r   r  r  r   r   r   r   r  r  r   r  r  r  r   r   r  r  r  r  r   r  r   r  r   r  tickDownr'   
rangeRoundr  r  r   r   r  r   r   r   r+   greenr(   )rM   _labelOffset_axisTickLengths_axisStrokeWidths   &   rC   rs   ScatterPlot.__init__  si   $
 &#' #' $(!+/'*+'*+'
&	 !!"22LNCvviDOO$<$< =t?U?U?^?^`d`o`o`v`v``  A  A##$44\A$//BXBXBaBaa%1M!#3 &6##)"%1M!#3 &6##)"##$ $'!)+$^;

'Q?

1'A>

1$*LL

1!rB   c                   V P                   V P                  P                  ,           V P                  P                  P                  ^,          ,           V P
                  P                  P                  ,           pV^\        \        V P                  P                  4      V P                  P                  P                  V P                  P                  P                  4      ,          ,           pWP                  ,           V P                  ,           pRV P
                  P                  ,          pV\        W P                  P                  P                  V P                  P                  P                  4      ,           pV P                  V P
                  P                  ,           V P
                  P                  P                  ^,          ,           V P
                  P                  P                  ^,          ,           pW0P                  P                  P                  ,           V P                   ,           V P"                  ,           pW3# )r   z%.2f%%)r  r   r  r  r  r   r  r  r   r   r  r   r  r  r  r  r   r  )rM   txr  tys   &   rC   _getDrawingDimensions!ScatterPlot._getDrawingDimensions  sx   doo6668N8N8Q8QRS8STUYUdUdUkUkUtUttq3t778$//:P:P:Y:Y[_[j[j[q[q[z[z{{|jj=***DOO,,,yOO22;;T__=S=S=\=\]^ 8 88$//:P:P:S:STU:UVX\XgXgXnXnXwXwxyXyzoo$$---dkk9$//IwrB   Nc                    V'       g   V P                  4       w  r#\        W#4      pVP                  V P                  4       4       V# rG   )r  r   rw   r0  )rM   r   r	  r
  s   &&  rC   r   ScatterPlot.demo  s5    ,,.EBbnGDIIK rB   c                <   \        V P                  P                  P                  4      P                  P
                  pV^ 8X  d   RpWP                  P                  P                  ,          p\        P                  V 4      pV P                  pV'       d   \        4       pV P                  V P                  ,           R,          Vn        ^ Vn        V P                  P                  P                  Vn        V P                  P                  P                  Vn        VP                  V4       VP                  V4       V P                   pV'       d   \        4       p^ZVn        ^ Vn        V P                  V P$                  R,          ,           Vn        V P&                  P                  P                  Vn        V P&                  P                  P                  Vn        VP                  V4       VP                  V4       V P(                  '       dh   VP                  \+        V P                  V P                  V P                  V P$                  V P,                  V P&                  P.                  RR7      4       VP1                  V P2                  V P4                  4       V# )r   g`"?g       @N)r(   r'   r*   )r   r   r  r  faceascentr  r   r0  r  r   r   r   r   r   rw   r  r  r   r   r  r	   r  r'   shiftr  r  )rM   r  r[   r  xlr  yls   &      rC   r0  ScatterPlot.draw  s   t--667<<CC19Foo,,555 ]]4 wBFF4::%s*BDBD//0099BK//0099BKJJvFF2JwBBHBDFF4;;s?*BD//0099BK//0099BKJJvFF2J FF4

DKK%)%:%:%)__%@%@#') *
 	!!4#5#56	rB   )r  r  r   r   r   r  r   r   r  r  r  r  r   r   r  r   r  r2   rG   )r3   r4   r5   r6   ry   r7   r   r8   r9   rc   r:   isString
isAnythingr@   rs   r  r   r0  rA   rO   rP   s   @rC   r  r    sS     H (8[\)(9]^ %1Ar$s (4MHh'i	
 #/x>n}~" '38Bc&d '38B^&_ *(9UV *(9UV (
9^_ #/}Ch"i !-]As t #/x>Z"[ $0?\#] ".h=X!Y  %1@^$_!H&@1D	' 'rB   r  c                 8   \        R^4      p RR.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        ^Vn        \        P                  Vn
        \        R4      VP                  n        ^VP                  ^ ,          n        ^VP                  ^,          n        ^ VP                  n        ^VP                  n        ^VP                  n        ^ VP&                  n        ^VP&                  n        ^VP&                  n        V P)                  V4       V # )2A line plot with non-equidistant points in x-axis.r   r   UK_Flagr   r   )r   r   r   r   r   r   r   r   r   r   r(   r   r   r+   r'   r   r   r   r   r   rw   r   r   r[   s      rC   sample1ar  '  s     c3G 23
D
 
BBDBDBIBHGBN\\BN +BHHOBHHQKBHHQKBMMBMMBMMBMMBMMBMMKKONrB   c                    \        R^4      p RR.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        ^Vn        \        R4      VP                  n
        RVn        \        P                  Vn        ^ VP                  n        ^VP                  n        . ROVP                  n        RVP                  n        ^ VP(                  n        ^VP(                  n        ^VP(                  n        V P-                  V4       V # )	r  r   r   Circler   %2.1fr   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r+   r   r   r   r(   r   r   r   
valueStepsr  r   r   rw   r  s      rC   sample1br"  M  s     c3G 23
D
 
BBDBDBIBHGBN *BHHO B\\BNBMMBMM3BMM$+BMM!BMMBMMBMMKKONrB   c                 `   \        R^4      p RR.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        ^Vn        \        R4      VP                  ^ ,          n
        \        R4      VP                  ^,          n
        RVn        \        P                  Vn        ^ VP                  n        ^VP                  n        . R	OVP                  n        RVP                  n        ^ VP(                  n        ^VP(                  n        . R
OVP(                  n        V P+                  V4       V # )r  r   r   r   r  r   r  r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r+   r   r   r   r(   r   r   r   r!  r  r   rw   r  s      rC   sample1cr$  q  s     c3G 23
D
 
BBDBDBIBHGBN#N3BHHQK#H-BHHQK B\\BNBMMBMM3BMM$+BMM!BMMBMM.BMMKKONrB   c                p    V  Uu. uF%  p\        V^ ,          4      V^,          ^d,          3NK'  	  up# u upi )z=Convert date strings into seconds and multiply values by 100.)str2seconds)seriesr   s   & rC   preprocessDatar(    s2     4::6a[1!S)6:::s   +3c                    \        R^4      p R.p\        V^ ,          4      V^ &   \        4       p^2Vn        ^2Vn        ^}Vn        R	Vn        Wn        ^Vn        \        R
4      VP                  n        \        P                  Vn        \        \!        R4      4      p\        \!        R4      4      p\        \!        R4      4      p\        \!        R4      4      p\        \!        R4      4      p\        \!        R4      4      p\        \!        R4      4      p	W2P"                  n        WP"                  n        W4WVWxV	.VP"                  n        \*        VP"                  n        RVP"                  P.                  ^,          n        RVP"                  P.                  ^,          n        RVP2                  n        ^dVP2                  n        ^nVP2                  n        ^VP2                  n        V P7                  V4       V # )r  r   
25/11/1991
30/11/1991
31/12/1991
31/03/1992
30/06/1992
30/09/1992
31/12/1992r   r   z%4.2f))r*  r   )r+  gea?)r,  ga+e?)z
31/01/1992gvq-?)z
29/02/1992gm4@?)r-  gyT?)z
30/04/1992g )
k?)z
31/05/1992gcȎ{?)r.  gy,?)z
31/07/1992gQ צ?)z
31/08/1992g[B>٬?)r/  gY)?)z
31/10/1992g~@?)z
30/11/1992g30?)r0  g`"?ii)r   r(  r   r   r   r   r   r   r   r   r   r+   r   r   r(   r   r   r   r   r   r!  seconds2strr  r  r  r   r   rw   )
r   r   r[   r  t0t1t2t3t4ends
             rC   sample2r8    s    c3G	
D& T!W%DG	BBDBDBIBHGBN 1BHHO\\BN;|,-E	L)	*B	L)	*B	L)	*B	L)	*B	L)	*B
\*
+C"MM MM %223?BMM$/BMM!!$BMM!$BMM$+BMM! BMM BMMBMMKKONrB   c                     \        R ^4      p \        4       pV P                  V4       \        VP                  ^ ,          ^4      VP                  ^,          .Vn        \        \        P                  ! R4      ^ RR7      VP                  ^ ,          n	        RVP                  ^ ,          n
        RVP                  ^,          n
        V # )r   z#9f9f9fN)r*   r'   r(   )r   rz  rw   r   r   rm   r   r  r   r-   r(   )dcharts     rC   sampleFillPairedDatar<    s    CA "EEE%L Aq1%**Q-@EJ!FNN9,ERS`deEKKN!%EKKN!%EKKNHrB   N)i0      Y@)韼0gq"Uo
Y@)c0gt	dY@)0gY@)+0g=hY@)0gkRY@)0g#޺Y@)V0g޴ϙY@)0grwY@)0g_i]^Z@)0g#T[@)0g/+^v[@)J0bȺ[@)0rJ  )s1gY?[@)1gr[@);1ga:{[@)1g'Q=c[@)1gCU[@)f1gL[@)1gі⠍[@)/	1g`[@)	1g R\@)	1g%^O.\@)Z
1gc3v\@)
1g+m\@)-1g^;[@)-1gP[@)K.1g&}kS\@).1g[@)/1gUP[@)v/1g|\pSe\@)r>  r=  )r?  g333333Y@)r@  g     Y@)rA  gyY@)rB       Y@)rC  r^  )rD  fffffY@)rE  r_  )rF  g33333Y@)rG  gffffffZ@)rH  g33333[@)rI  gfffff[@)rK  g[@)rL  gfffffF\@)rM  ǧ[@)rN  g33333[@)rO  g33333\@)rP  gfffff[@)rQ  g33333S[@)rR  g[@)rS  g[@)rT  fffff&\@)rU  gL\@)rV  皙y\@)rW  g\@)rX  g,\@)rY  ra  )rZ  g33333\@)r[  g\@)r\  r`  )r]  gfffff\@)C__version__ry   r  r   reportlab.lib.validatorsreportlab.lib.attrmapreportlab.lib.utilsr   r   r@  r   r   r	   r
   r   r   reportlab.graphics.widgetbaser   r   r   $reportlab.graphics.charts.textlabelsr   reportlab.graphics.charts.axesr   r   r   r   reportlab.graphics.charts.utils"reportlab.graphics.widgets.markersr   r    reportlab.graphics.widgets.gridsr   r   r   reportlab.pdfbase.pdfmetricsr   r   reportlab.graphics.charts.areasr   utilsr   r   rH   rE   rS   rf   rm   r{   r   rh  r   r   rF  r|  rz  r  r  r  r  r  r  r"  r$  r(  r8  r<  r2   rB   rC   <module>ro     s  
 G   & # . ^ ^ Y Y 6 f f - I L L = 4 !
 
# 
%_ 
% : : 	vm 		 	 Cc'  c'JM M^'   	
   !          !!" #$ !%& '( !)* +, -. /0 12 34 56 78 9: ;< => ?@   	
             !" #$ %& '( )* +, -. /0 12 34 56 78 9: ;< => ?A? B&8 &R' Rh8 2=L =fQ( Qf#L!H"J;:xrB   