%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3/dist-packages/reportlab/graphics/charts/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3/dist-packages/reportlab/graphics/charts/__pycache__/barcharts.cpython-312.pyc

�

׸�e�����dZdZddlZddlZddlmZddlmZddlm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZmZddlmZmZddlmZmZdd	lmZmZdd
lmZddl m!Z!m"Z"m#Z#ddl$m%Z%m&Z&m'Z'm(Z(m)Z)dd
l*m+Z+m,Z,m-Z-m.Z.ddl/m0Z0m1Z1ddl2m3Z3ddl4m5Z5ddl6m7Z7Gd�de"�Z8Gd�de3�Z9Gd�de9�Z:Gd�de9�Z;Gd�d�Z<Gd�de9�Z=Gd�de=e:�Z>Gd �d!e=e;�Z?d"�Z@d#�ZAd$�ZBd%�ZCd&�ZDd'�ZEd(�ZFd)�ZGd*�ZHd+�ZId,�ZJd-�ZKgd.�ZLd/�ZMd0�ZNd1�ZOd2�ZPd3�ZQd4�ZRd5�ZSd6�ZTd7�ZUd8�ZVd9�ZWd:�ZXd;�ZYd<�ZZd=�Z[d>�Z\d?�Z]d@�Z^gd.�ZLdA�Z_dB�Z`dC�ZadD�ZbdE�ZcdF�ZddG�ZedH�ZfGdI�dJe(�Zgy)Kz3.3.0z�This module defines a variety of Bar Chart components.

The basic flavors are stacked and side-by-side, available in horizontal and
vertical versions. 

�N)�literal_eval)�colors)�isNumber�isNumberOrNone�
isColorOrNone�isString�
SequenceOf�	isBoolean�isStringOrNone�NoneOr�isListOfNumbersOrNone�EitherOr�OneOf�isInt)�isStr�yieldNoneSplits)�uSymbol2Symbol�isSymbol)�AttrMap�AttrMapValue)�stringWidth)�TypedPropertyCollection�
PropHolder�
tpcGetItem)�Line�Rect�Group�Drawing�PolyLine)�
XCategoryAxis�
YValueAxis�
YCategoryAxis�
XValueAxis)�
BarChartLabel�NoneOrInstanceOfNA_Label)�PlotArea)�_objStr��cmpc���eZdZeeed��eed��eed��eed��eddd�	�eed
��ee	e
�dd�	�eed��ee	e�d
����	Z
d�Zy)�BarChartPropertieszColor of the bar border.��desczColor of the bar interior area.zWidth of the bar border.zDash array of a line.Nz,A widget to be used instead of a normal bar.��r-�
advancedUsagez0Text to be associated with a bar (eg seriesname)z!None or makeMarker('Diamond') ...z(minimum width/height that will be drawn.z%if this bar should be drawn as a line)	�strokeColor�	fillColor�strokeWidth�strokeDashArray�symbol�name�swatchMarker�minDimen�isLinec�f�d|_tj|_d|_d|_d|_y)N��?)r1r�bluer2r3r5r4��selfs �E/usr/lib/python3/dist-packages/reportlab/graphics/charts/barcharts.py�__init__zBarChartProperties.__init__,s,����������������#���)�__name__�
__module__�__qualname__rrrrr
rrrrr
�_attrMapr@�rAr?r+r+s����"�=�7Q�R� ��5V�W�"�8�2L�M�&�'<�CZ�[��d�)W�fg�h��H�+]�^�#�F�8�$4�;^�mn�o���5_�`��f�Y�/�6]�^�

�H�$rAr+c���eZdZdZedNide�deeeee	e
f�f�dd���dee
d�	��d
ee
d�	��dee
d
�	��dedd�	��dedd�	��dedd�	��dedd�	��dedd�	��dedd�	��deddd���dedd�	��deed d���d!eed"d���d#edd$�	��d%ee
d&�	��d'eed(d)d*�d+�	��d,edd-d���d.ee
d/�	��d0eed1d���d2eeeed3d3d�4�d3dd�4�d5���Zd6�ZdOd7�Zd8�Zd9�Zd:�Zd;�Zd<�Zd=�Zd>�Zd?�Zd@�ZdA�ZdB�ZdPdC�ZdQdD�ZdE�Z dF�Z!dG�Z"dH�Z#dI�Z$dJ�Z%dK�Z&dL�Z'dM�Z(y)R�BarChartz(Abstract base class, unusable by itself.�BASE�useAbsolutezrFlag to use absolute spacing values; use string of gsb for finer control
(g=groupSpacing,s=barSpacing,b=barWidth).r.r/�barWidthzThe width of an individual bar.r,�groupSpacingzWidth between groups of bars.�
barSpacingzWidth between individual bars.�barsNzHandle of the individual bars.�	valueAxiszHandle of the value axis.�categoryAxiszHandle of the category axis.�dataz/Data to be plotted, list of (lists of) numbers.�	barLabelsz!Handle to the list of bar labels.�barLabelFormatzZFormatting string or function used for bar labels. Can be a list or list of lists of such.�barLabelCallOutz`Callout function(label)
label._callOutInfo = (self,g,rowNo,colNo,x,y,width,height,x00,y00,x0,y0)�
barLabelArrayzGexplicit array of bar label values, must match size of data if present.�reversePlotOrderz,If true, reverse common category plot order.�naLabelzLabel to use for N/A values.�annotationsz<list of callables, will be called with self, xscale, yscale.�categoryLabelBarSizez=width to leave for a category label to go between categories.�categoryLabelBarOrder�first�last�autoz,where any label bar should appear first/last�	barRecordzJcallable(bar,label=labelText,value=value,**kwds) to record bar information�zIndexOverridesa!None (the default ie use old z ordering scheme) or a ',' separated list of key=value (int/float) for new zIndex ordering. If used defaults are
    background=0,
    categoryAxis=1,
    valueAxis=2,
    bars=3,
    barLabels=4,
    categoryAxisGrid=5,
    valueAxisGrid=6,
    annotations=7�categoryNALabelz'Label to use for a group of N/A values.�seriesOrderr)�emptyOK�NoneOK�loz#dynamic 'mixed' category style casec
�n�|j}|t|�z}||}t|dt|dd��}	t|dt|dd��}
t|dt|dd��}t|dt|dd��}t|dt|dd��}
|
rt|
||dzz||dzz|
�St|dd�r�||dzz}t	|d	�r
|j
}nt	|d	�r
|j
}nd}t
||||z||jxs|j|j|j�
�}|r,t|||dzz||jxs|j�}|r0|r.t�}|j|�|j|�|S|xs|St||||||	||
��S)Nr1r2r4r3r7�@r9Fr5�r1r3r4)r3r1r4r2)rN�len�getattrr�hasattrr5rr1r2r3r4r�addr)r>�rowNo�x�y�width�height�	baseStyle�styleIdx�styler1r2r4r3r7�yh2�S�L�gs                  r?�makeSwatchSamplezBarChart.makeSwatchSampleWs����I�I�	��3�y�>�)���(�#���e�]�G�I�m�TX�4Y�Z���E�;��	�+�d�0S�T�	�!�%�):�G�I�N_�`d�<e�f���e�]�G�E�=�QU�4V�W���u�n�g�i��X\�6]�^���!�,�q��r��z�!�F�2�I�+�i�P�P�
�U�8�E�
*��F�2�I�+�C��u�h�'��L�L����H�-��$�$�����Q�s�A�e�G�S� %� 1� 1� D�U�_�_� %� 1� 1�&+�&;�&;�=�A�
�n�Q�q��r��z�#�e�6G�6G�6Z�5�?�?�[�!��Q��G�����a�����a�����6��M���!�E�&�[�[�(7�)�M�
MrAc�H�tt|j|d|��S)zreturn series name i or defaultr6)r'rirN)r>�i�defaults   r?�
getSeriesNamezBarChart.getSeriesNamezs���w�t�y�y��|�F�7�;�<�<rAc�0�|jjdvsJd|jjz��|jrt�|_t�|_nt�|_t�|_tdddd�|jjd_tj|�d|_d|_d	d
g|_d|_d|_d|_d|_t)t*�|_d
|j,_d|j,_d|_d|_d|j,_t)t8�|_d|j:_t>j@|j:_!d|j:_"t>jF|j:d_$t>jJ|j:d_$t>jL|j:d_$dx|_'|_(d|_)y)N)rH�
BarChart3DzAbstract Class %s Instantiated�stacked�parallel�parallel_3d�mixedrsr)�d�n�x�)�F�P�U�Z�
��c�middler.�)*�	__class__rB�_flipXYr"rPr#rOr r!rrE�validater&r@rMrVrQrJrKrLrr$rR�	boxAnchor�
textAnchorrSrU�nudger+rNr3r�blackr1r4�redr2�greenr<rWr`r_r=s r?r@zBarChart.__init__~s����~�~�&�&�.G�G�	D�Ii�lp�lz�lz�mD�mD�JD�	D�G��<�<� -��D��'�\�D�N� -��D��'�\�D�N�7<�Y�z�R_�`g�7h����"�"�7�+�4����$����� !���'�$�&��	������
�������0��?���#&���� �$,����!�"���!��� !�����,�,>�?��	� !��	�	�� &����	�	��$(��	�	�!�!'����	�	�!���!'����	�	�!���!'����	�	�!���.2�2���t�+�#��rAc��|jjdk(rtd��tdd�}|j�}|j	|�|S)zShows basic use of a bar chartrHz#Abstract Class BarChart has no demo��r�)r�rB�NotImplementedErrorrrk)r>�drawing�bcs   r?�demoz
BarChart.demo�sH���>�>�"�"�J�.�%�&K�L�L��#�s�#��
�^�^�
�����B���rAc	��t|dd�}t|j�}|s!t|�D�cgc]}|f��}}||_y|j}tt|��}t�}g}|D]v}|D�chc]}d|cxkr|ks�nn|��}	}|	D�chc]}|j
|dd�s�|��}
}|
r|	|
z}	||
z}||
z}|	s�X|jt|	��||	z}�x|r!|jd�t|�D��|r!|jd�t|�D��||_ycc}wcc}wcc}w)Nrarr9Fc3�"K�|]}|f���	y�w�NrF��.0�sss  r?�	<genexpr>z*BarChart.getSeriesOrder.<locals>.<genexpr>�s����8�2�"��8���
c3�"K�|]}|f���	y�wr�rFr�s  r?r�z*BarChart.getSeriesOrder.<locals>.<genexpr>�s����7�2�"��7�r�)rirhrQ�rangerN�set�	checkAttr�append�tuple�extend�sorted�_seriesOrder)r>�bs�nr��RrN�unseen�lines�srw�gls           r?�getSeriesOrderzBarChart.getSeriesOrder�s8��
�T�-��
-����	�	�N���!&�q��*�2�"��*�A�*�(���%�9�9�D���q��]�F��E�E��A��	
 ��"#�0�B�q�"�x�a�x�R�0��0�#$�J�R����r�(�5�(I�b�J��J����G�A��R�K�E��b�L�F���H�H�U�1�X�&��a�K�F�	
 �����8����8�8�����7����7�7�����)+��1��Js�
D;�;E�E�E�2Ec�:���|jj}|j�tt	tt����}��|dvrHg��fd�}|dk(r
|���|_	y|j�|jD]}|�fd�|D����|_	y)N�r�r�c���td�|D��dgz}|dd}|D];}t|�D]+\}}|xsd}|dkr||xx|z
cc<�||xx|z
cc<�-�=�j|��j|�y)Nc3�2K�|]}t|����y�wr�)rh)r��ds  r?r�zBBarChart._getConfigureData.<locals>._accumulate.<locals>.<genexpr>�s����/��S��V�/�s�r���ư�)�max�	enumerater�)�D�pdata�ndatar�rz�vrQs      �r?�_accumulatez/BarChart._getConfigureData.<locals>._accumulate�s�����/�Q�/�0�!��4���a����*�A�(��|�*���!��F����e�8�!�!�H��M�H�!�!�H��M�H�*�*����E�"����E�"rArc3�(�K�|]	}�|���y�wr�rF)r��j�_datas  �r?r�z-BarChart._getConfigureData.<locals>.<genexpr>�s�����!6�q�%��(�!6�s�)
rPrsrQr��list�maprhr�r��_configureData)r>�cAStyle�ccr��br�rQs     @@r?�_getConfigureDatazBarChart._getConfigureData�s�����#�#�)�)���y�y��
��c�#�d�m�$�
%�����4�4��D�
#��	�!��U�#�
#����#�#�%��*�*�8�A��!6�A�!6�7�8�"��rAc���|j�|jj|j�|jj|jj
fS)z Attempt to return the data range)r�rO�	_setRanger��	_valueMin�	_valueMaxr=s r?�
_getMinMaxzBarChart._getMinMax�sE����� ���� � ��!4�!4�5��~�~�'�'����)A�)A�A�ArAc��|j}|j|j|j|�|j	�|j|j�|jd�}|js
||k\r
|||zkr|S|S)z8Position and configure value axis, return crossing valuer)	rO�setPositionrmrnr��	configurer��scale�	forceZero)r>�org�length�vA�	crossesAts     r?�
_drawBeginzBarChart._drawBeginss��
�^�^��
���t�v�v�t�v�v�v�.���� �
���T�(�(�)��H�H�Q�K�	��L�L�Y��^�	�3�v�:�@U�y�_�\_�_rAc�h	�|j}|j}|j|j�|j	�t�}t
|dd�}|�s=|j|j��t
|dd�}t
|dd�}|s|j|||j��|s|j|||j��|j|j��|j|�|j|�|r|j|||j��|r|j|||j��t
|dd�D]/}|j|||j|j���1|`|Stdd	d
ddd
dd��}|j�jd�D]�}	|	j�}	|	s�	|	jd�\}
}|
|vrPt!d|
�d|�ddj#t%|j'��D�
cgc]}
|
�d||
����c}
�����	t)|�}t+|t,t.f�sJ�	|||
<��|j1�D�
�cgc]	\}
}||
f��}}
}|j3�|j�}|j4j7d�}
|D�]\}}
|
dk(r |j|j���,|
dk(r|j|��C|
dk(r|j|||j���g|
dk(r|j|��~|
dk(r|j|||j����|
dk(r|j|���|
d k(r|j|
���|
dk(s��t
|dd�D]/}|j|||j|j���1��|`|S#t!d|	�d|�ddj#t%|j'��D�
cgc]}
|
�d||
����ncc}
wc}
�����xYwcc}
w#t!d||	|dj#t%|j'��D�
cgc]}
|
�d||
����ncc}
wc}
�fz��xYwcc}}
w)!z"finalize the drawing of a barchartr_N�drawGridLastF)�parent�dimrXrFrr.r���r���)�
backgroundrPrOrNrR�categoryAxisGrid�
valueAxisGridrX�,�=zBadly formatted zIndex clause z in z
allowed variables are
�
zUnknown zIndex variable zCBad zIndex value %r in clause %r of zIndex
allowed variables are
%s���r�rPr�rOr�rNrR)rPrOr�r��calcBarPositionsrrirk�makeBackground�makeGrid�getGridDims�makeBarsr��dict�strip�split�
ValueError�joinr��keysr�
isinstance�float�int�items�sort�contents�pop)r>�cAr�rw�zIndex�cAdgl�vAdgl�a�Z�z�kr�r��bls              r?�_drawFinishzBarChart._drawFinishs��
�
�
��
�^�^��
���T�(�(�)������G����/��5���
�E�E�$�%�%�'�(��B�~�e�4�E��B�~�e�4�E��"�+�+�a�t����+�H��"�+�+�a�t����+�H�
�E�E�$�-�-�/�"�
�E�E�"�I�
�E�E�"�I��b�k�k�!�4�R�^�^�k�D��b�k�k�!�4�R�^�^�k�D��T�-��3�U��Q�U�U�1�T�"�(�(�2�8�8�;T�5U�U�b
����a������!"���	�A��\�\�^�)�)�#�.�
���G�G�I���(�p������C�A�a��A�:�$�fg�hi�jn�js�js�QW�XY�X^�X^�X`�Qa�ub�LM�@A�BC�DE�BF�vG�ub�kc�&d�e�e�v�$�Q��A�%�a��s��4�4�4���!��
�#$�'�'�)�,�3�1�Q�!�A��,�A�,�
�F�F�H��
�
��A�������#�B��
^���!��l�?��E�E�$�-�-�/�0���&��E�E�"�I��*�*��K�K���2�>�>�K�B���^��E�E�"�I���'��K�K���2�>�>�K�B���Y��E�E�!�H���^��E�E�"�I��
�%�$�T�-��;�]��Q�U�U�1�T�"�(�(�SU�S[�S[�C\�=]�]�!
^�$
�����Cp�$�lm�nt�uy�u~�u~�\b�cd�ci�ci�ck�\l�@m�WX�KL�MN�OP�MQ�AR�@m��@m�vn�&o�p�p��ub��v�$�%l�pq�rs�tz�{�|E�|E�bh�ij�io�io�iq�br�Fs�]^�QR�ST�UV�SW�GX�Fs��Fs�|t�pu�&u�v�v��,s<�$O5�.Q�
#Q�R.�54Q
�)P;�:Q
�1R+�R�R+c�	�%�&�'�(�)�*�+�,�-�.�/�0�1�2�3�4�5�6�|j�,�,r
|j�/n|j�/|j}|j�+|j
}t
|�x}|_tttt|���x|_}|j}|j}|j}t|dd�}t|dd�}	|	dk(r
�,xrdxsd}	|	dk(}	|j �1|j"�)t%�)fd�t'|�D��}
||
z
}�1dk(rD|j(}t
|�|
z
}
|
|z}|
d	z
|z}|
d	kDr|}|}ndx}}|
|zdgz�&�&d
d
�'n-�1dvrd	}
||z}|d	z
|z}|}|}n|}
|dgz�&�&d
d
�'|}dx}x}}||z|zx|_�-|j,�2�2r.t/�2t0�sd�2ndd	d
�2vzzdd�2vzzdd�2vzz�2nd�2t3�+d�d	�}||z
}�2dk(r|�-zx|_x}x}}n��2dk(rdx}x}}|j6�%n��2d	k(rd}||z
||zzx}}nl�2dk(rd}||z
||zzx}}nW�2dk(rdx}}|r||z
|z
|znd}n>�2dk(rd}||z
||zzx}}n)�2dk(rdx}}||z
|z
|z}n�2dk(rd	x}}||z
|z
|z}|_|_|_|j>}|j�4|j@�3|jB|jD}}|dcxkr|krnn	�4d��*nd|kr	�4|��*n
|dkr�4|��*�*|_#||z�5d|z|z}||z||zz}|r;|	r||dzz|z}||z
}n|||zz||zz|dzz|z}||jH_%g|_&|jLjN}|jP}�%�&�'�(�*�+�,�-�.�/�0�1�2�3�4�5�6fd�}�1dk7r~d} tS|�D]m\}!�0g�(|r|
d	z
|!z
n|!�6|�6|zz�6�)jU|!dd��.�.r| d	z
} ||d	z
|zdzz�6n�6| |zz�6t'|�D]}"||"|"��
|�(��oy
d} tS|j(�D]�\}#}$t
|$�d	krdnd�1|$D]u}!|r|
d	z
|#z
n|#�6|�6|zz�6g�(||!�0�)jU|!dd��.�.r| d	z
} ||
d	z
|zdzz�6n�6| |zz�6t'|�D]}"||"|"|
z|#z��|�(��w��y
)z�Works out where they go. default vertical.

        Sets an attribute _barPositions which is a list of
        lists of (x, y, width, height) matching the data.
        rYrrZr]r\r[c3�V�K�|] }t�j|dd�����"y�w)r9FN)r�r�)r��_rNs  �r?r�z,BarChart.calcBarPositions.<locals>.<genexpr>os#�����[�1��T�^�^�A�h�u�=�>�[�s�&)r�r.Nr�r�r�r�rwr�r���?r�r�r�r;g@c����dk(r��|�z�z�z}n�
|�\}}|�z}�|}|�d}�}n��dvra�s_|dkr-��	|�}�r|�krn|�kDr�}�	|xx|z
cc<�	|}n/��
|�}�r|�kDrn|�kr�}�
|xx|z
cc<�
|}n�}�|�|z
}d|cxkrdkrnn	d}|dkrd}�j�xr|||�fxs||�|f�y)Nr�r�r��:�0�yE��:�0�yE>)r�)�colNo�accxrmrwr�datumrprn�_cscale�accumNeg�accumPos�barRow�baseLine�cScale�flipXY�
groupWidthr9r��rowrsrJ�vARD�vScalero�xVals        �����������������r?�_addBarz*BarChart.calcBarPositions.<locals>._addBar�s*����A�~��w�u�~�-��4�s�:�������A���H����J�E��}������ :�:�6��e�|�"�8�D�>�2��*.�A�h�J�A�h�J�X�� ���%�/�� (����"�8�D�>�2��*.�A�h�J�A�h�J�X�� ���%�/�� (���� �A�����*����%��%�!�F��U�{�U�F��M�M�&�7�a��&��%7�M�A�a��f�;M�NrAr9Fr�r)+r�rnrmrPr�rQrh�_seriesCountr�r�r��
_rowLengthrLrMrKrirsrN�sumr�r��_groupWidthrJr��strr��_normFactor�_scale�_normFactorB�_normFactorG�_normFactorSrO�reverseDirectionr�r��	_baseLine�labels�labelPosFrac�
_barPositionsr�rVr�r�)7r>r�rQ�seriesCount�	rowLength�wGrMrK�clbs�clbo�	lineCount�seriesMLineCountr��barsPerGroup�wB�wS�bGapB�bGapS�aW0�aW�fB�fG�fSr��vm�vM�offs�bGap�lbpf�aBPrVr�lineSeenrlr�sb�sgrrrrrNrrrrr9r�rrsrJrrrors7                                     @@@@@@@@@@@@@@@@@@r?r�zBarChart.calcBarPositionsSs+�����������&�&�C��&�&�C�
�
�
�������y�y��*-�d�)�3��d�'�&)�$�s�3�t�}�*=�&>�>���)�
�
�
���_�_�
��=�=���t�2�1�5���t�3�F�;����<�� 1�6� <�W���W�}�������y�y���[��k�HZ�[�\�	�&��2���'�>��"�"�B��r�7�Y�.�L��h�&�B��q�.�*�,�B��A�~� ��"�� !�!���#�I�-�q�c�1�H���{�H�
�0�
0��L�!�(�*�B�"�1�$�j�0�B��E��E�+�L� �!��}�H���{�H��B�!"�"�B�"���(*�2��b��0���:��&�&����k�#�.����!�S�K�%7�"8�8��C�;�<N�9O�O�PQ�SV�Ze�Se�Pf�f���K��F�1�I�a�L�!��
�4�Z����>�.0��m�;�D��;�r�;�B��
�!�^���B���b��i�i�G�
�!�^��B��"�u�r�"�u�o�%�B��
�!�^��B��"�u�r�"�u�o�%�B��
�!�^��M�B��"$�"�R�%��(�B��!�B�
�!�^��B��"�u�r�"�u�o�%�B��
�!�^��M�B���R�%��(�B��B�
�!�^��K�B���R�%��(�B��B�����������^�^�������"�"�����r�|�|�B��
��=�b�=��a�y�H�
��V��b�z�H�
�!�V��b�z�H�!��������2�v�b�y���R�x��b�� �����T�#�X�
�s�*�������R��U�
�2�b�5�(��c��1�3�6��%)�B�I�I�"����� � �'�'���0�0��	O�	O�	O�@�'�>��H�'��o�
�
��s���3C�|�a�'�%�/����d�4�i�'������x��?�����M�H��!1�!�!3�T� 9�#� =�=�D��H�T�M�)�D�"�9�-�)�E��E�%�(�)��F��
��H�"�4�#4�#4�5�
 ���2�&)�"�g�q�j�
�i���
 �E�4D�<�!�+�b�0�"�D��$�t�)�+�D��F��u�+�C�!�^�^�E�8�U�C�F�� �A�
��#�\�!�^�T�$9�#�$=�=�����
�-��!&�y�!1�?����e�L�&8�2�&=�>�?���K�
 �
 rAc�t�|j}t|ttf�r ||}t|ttf�r||}|�d}|S|dk(r|j||}|St|�r||j||z}|St|d�r||j||�}|Sd|z}t|��)zreturn formatted label textN�values�__call__z6Unknown formatter type %s, expected string or function)	rSr�r�r�rUrrQrj�	Exception)r>rlr�labelFmt�	labelText�msgs      r?�
_getLabelTextzBarChart._getLabelTexts����&�&���h��U�|�,����H��(�D��<�0�#�E�?�����I�����
!��*�*�5�1�%�8�I����8�_� �4�9�9�U�#3�E�#:�:�I����X�j�
)� ����5�!1�%�!8�9�I���K�X�U�C��C�.� rAc�<�|j}t|dd�}|dk(}|r|}|x}	}
|rd}
|d|zz}|dk\xrdxsd|z}|dk(r	||dzz}n@|d	k(r|
dk\r	||
z|z}n-||z
}|	}	n$|d
k(r|
dkr	||
z|z}n||z
}|	}	n||
z|z}|	|_|||	fS)zCompute x, y for a label�	boxTarget�normal�antirr;r.r��mid�hird)r�ri�_pmv)
r>�labelrmrnrorpr��btrT�pm�valuerr�s
             r?�_labelXYzBarChart._labelXY&s�������
�U�;�x�
0���6�z���%������U����
��E�	�M������q�&�B��-��
�u�9��&��*��A�
��X��a�x���I��%����I���S��
��X��a�x���I��%����I���S���E�	�E�!�A���
���2�v�
rAc�~�|j||�}|r)|j||j||f|||||||�	yyr�)rP�	_addLabelrR)	r>rwrlrrmrnrorp�texts	         r?�_addBarLabelzBarChart._addBarLabelCsI���!�!�%��.����N�N�4�������!?��E�5�RS�UV�X]�_e�f�rAc
��|	�|j}	|	rp|	jrctj|	�}	|jjdkxrdxsd}
|�|
}|�|
}|j|	j|	||||||||��
Syy)Nrrr)�calcOnly)rWr_�copyrOr�r^)r>rwrlrrmrnrorprb�nar�s           r?�_addNABarLabelzBarChart._addNABarLabelHs���
�:�D�L�L�r�
�"�'�'����2��B����(�(�!�+�5��=��A��}�a�e��~��v��>�>�"�'�'�2�q�%���1�e�V�^f�>�g�g��2rAc�z�|j�r�t||j|j�}|j}|r|j||||	|�\}
}}n|j|||||	�\}}
}t
|dd�}|�|j||�}||
}}|r|}n|}
n|r|}||	dzz}n
||dzz}|
}t
|dd�}|�|j||�}|r|}n|}|dkr&|rd|jz}d}nd|jz}d}ndx}}|
r
||z|
|zfS|j||z|
|z�|j|�|j|j}}|r#|r!|jdt||||
||���|j!|�t
|dd�}|r||||||||	||||
f|_||�|`yyy)N�fixedEndrf�
fixedStartr���)r1r3rT)�visibler�fontName�fontSizer�r\ri�	_getValue�dx�dy�	setOrigin�setText�lineStrokeColor�lineStrokeWidth�insertrrk�_callOutInfo)r>r_rXrwrlrrmrnrorprb�
labelWidthr�y0�x0rZrgr��x00�y00rhrnro�sC�sW�alxs                          r?r^zBarChart._addLabelQs����=�=�$�T�5�>�>�5�>�>�J�J��\�\�F��!�]�]�5��1�V�E�B�
��B��!�]�]�5��1�U�6�B�
��B���u�Z��6�H��#��&�&�t�B�/���r�S����B��B���C��F�3�J�,�C��E�#�I�+�C��C� ��|�T�:�J��%��(�(��b�1����C��C��!�t���E�H�H��B��B��E�H�H��B��B����R���2��r�"�u��,��O�O�B�r�E�2�b�5�)��M�M�$���*�*�E�,A�,A��B��b�!�(�(�1�T�#�c�"�R�R�UW�%X�Y�
�E�E�%�L��$�0��6�C��&*�1�U�5��1�U�6�#�c�RT�UW�%X��"��E�
��&��]rAc���t||||�}|j|_|j|_|j|_|jr|j|_|j|�yr�)rr3r2r1r4rk)	r>rwrmrnrorprlrs�rs	         r?�_makeBarzBarChart._makeBar�sY����A�u�f�%���)�)��
��o�o����)�)��
�� � � %� 5� 5�A��	���a�rAc
�	�|j}t|dd�}|j}|j}|j}i}|rQg}	t|j�dz
}
t|�D])\}}t|�D]\}
\}}}}d||fvs�d||
<��+gj}gj}t|�D�]�\}}t|�}||z}||}|j|dd�}gj}t|�D�]�\}
\}}}}||
f|vxr|||
fxs|}d||fvr�|r|
|vr|j|||
||||�n�|r�|
	vr�|j|||
||||d|�	}|r[|
|
\}}}}|j||
|
||||d|�	}|d|dzdz}|d|dzdz}|j||
|
||dd|�	�|	j|
�|r|d���d}t|d
�r tj|j�}n,t|jd
�r|jj}t|dd�}|ri|r4|dkrt|j |�}nJt#|j |�}n3|dkrt|j |�}nt#|j |�}|rj|s||z}||dzz}n
||z}||dzz}||�||�|r�t%t'||
�|||j(xs|j*�} | r�|| �n�|r.||_||_||_||_|j5|�n�t7|�d
kDryt7|�d
k\rk|j*�|j(�S|j9|||||||�|r:||j:d|j=||
�|j||
||
��|j?|||
||||����tA|jB�D]F}|s�|tE||j(xs|j*|jF|jH����H���|jBD]}!|j5|!��|jBD]} |j5| ��y)Nr^r.r9FTrrfg-C��6?)rdr5r8r;gH�����z>r�)rXr[rlrrg)%rNrir.r�r`rhrQr�r�r�rerjrc�deepcopyr5�minr8r�rrr1r2rmrnrorprk�absr�r�rPr`r�__self__rr3r4)"r>rw�lgrN�br�BPr�catNAL�catNNA�CBL�rowNoLrlrrrmrnrorpr��lineSyms�
styleCountrr�rowStyler9�linePtsrs�r0�r1r5r8�yL�xL�sym�pls"                                  r?�	_makeBarszBarChart._makeBars�s����y�y��
�T�+�d�
+��
�
�
�������%�%������C�����^�a�'�F�'��m�
*�
��s�4=�c�N�*�0�E�0�A�q�%���E�&�>�1�()��u�
�*�
*�
�	�	���9�9��#�B�-�K	I�J�E�3��T��J��z�)�H��H�~�H��^�^�E�8�U�;�F��i�i�G�-6�s�^�>
C�)��)��!�E�&�!�%�(�D�0�K�T�8�E�:J�5K�W�x���E�&�>�)�!�U�f�_��+�+�B�u�U�1�Q�u�V�L��E��$4�!�0�0��E�%��!�E�&�QU�V\�]���24�V�*�U�2C�/�A�q�%��!%�!4�!4�R��u�Q�q��v�VZ�[a�!b�B�!#�A��r�!�u��c� 1�A�!#�A��r�!�u��c� 1�A� �/�/��6�%��!�F�6�U[�/�\��
�
�5�)��w�t�}�����5�(�+�!�]�]�5�<�<�8�F��T�Y�Y��1�!�Y�Y�-�-�F� ��z�$�7���� ��7�$'������$>�E�$'����u�$=�E�!�!�8�%(�%�.�.���%@�F�%(�����%?�F��!���Z����s��]����Y������^���B�K��B�K��,�Z��u�-E�b��E�L]�L]�Lp�af�ap�ap�q�����
�� �F�H� �F�H�#(�F�L�$*�F�M��E�E�&�M���Z��_��V��d�):����@[�_d�_p�_p�_|��M�M�!�A�a��f�U�5�A��2�a�j�j��n�4�3E�3E�e�E�3R�Y]�Yb�Yb�ch�Yi�jo�Yp�w|�DI�J��!�!�"�U�5��1�U�6�B�}>
C�@+�7�+;�+;�<�
I����(�7�(0�(<�(<�(R��@R�@R�(0�(<�(<�.6�.F�.F�H�I�
I�MK	I�Z�.�.�	�B�
�E�E�"�I�	��$�$�	�C�
�E�E�#�J�	rAc	��|j�r8t||j|j�}	|j}
|
r|j|||||�\}}}
n|j|||||�\}}}
t
|dd�}|�|j||
�}||}}|
r|}n|}n|
r|}||dzz}n
||dzz}|}t
|dd�}|�|j||
�}|
r|}n|}|
dkr&|
rd|jz}d}nd|jz}d}ndx}}|j||z||z�|j|�|
|j�fSy)Nrgrfrhrri)
rjrrkrlr�r\rirmrnrorprq�	getBounds)r>r_rXrlrrmrnrorprvrrwrxrZrgr�ryrzrhrnros                     r?�_computeLabelPositionzBarChart._computeLabelPosition�sj���=�=�$�T�5�>�>�5�>�>�J�J��\�\�F��!�]�]�5��1�V�E�B�
��B��!�]�]�5��1�U�6�B�
��B���u�Z��6�H��#��&�&�t�B�/���r�S����B��B���C��F�3�J�,�C��E�#�I�+�C��C� ��|�T�:�J��%��(�(��b�1����C��C��!�t���E�H�H��B��B��E�H�H��B��B����R��O�O�B�r�E�2�b�5�)��M�M�$���e�o�o�'�'�'�SrAc���|j|j}}|r||_|r||_|jrL|j	|j|j|j�|j|j�nK|j	|j|j|j|j�|j�|j|j�|j�y)zRInformation function, can be called by charts which want to with space around barsN)
rPrO�joinAxisr�r�r�rmrornrpr�r�r��r>r�r�s   r?�_computeBarPositionszBarChart._computeBarPositionss����"�"�D�N�N�B��
�R�r�{�
�R�r�{��<�<��N�N�4�?�?�4�6�6�$�*�*�=�t�v�v�t�{�{�S��N�N�4�6�6�4�?�?�4�6�6�$�+�+�#F��
�
�S�
���T�(�(�)����rAc���|j}|j�t|j�}|j}g}|j
}|r�|j}||jz}	|j|jz}
|D]R}|D]K\}}
}}||z}|
|z}|t|
|�t|
|�t||�|z
|	t||�z
f��M�Tn�|j}||jz}	|j|jz}
|D]R}|D]K\}}
}}|
|z}||z}|t||�t||�t|
|�|z
|	t|
|�z
f��M�T|j�|dg}|D]x}|d}|d|dkrU|d|dkrJt|d|d�t|d|d�t|d|d�t|d|d�f|d<�h|j|��z|}d}d}t|�}t|�D]�\}}|d}||z}||
kDr||fS|}dx}}||krE||d|kr:t||d|�}t||d|�}|dz
}||kr||d|kr�:||kDr3||kDs�u|}|xr
||||z||zdfxs
||||z||zdf}||k\s��||fS||kDs��|}|xr
|	|z
||	||zdfxs
||	|z
||z|	df}||k\s��||fS||fS)	akhelper for madmen who want to put stuff inside their barcharts
        basically after _computebarPositions we slide a line of length size
        down the bar profile on either side of the bars to find the
        maximum space. If the space at any point is >= required then we're
        done. Otherwise we return the largest space location and amount.
        rr�r.r�r�i�Ni���)r�r�rhrQr.r�rmrornrpr�r�r�r�)r>�size�requiredr�lenDatar��C�aCrdrV�end�bprmrn�w�hr�rr�r�r�maxS�maxP�nCrz�ci�v0�v1r��alo�ahis                               r?�_computeMaxSpacezBarChart._computeMaxSpace+s��������!�!�#��d�i�i�.��
�
�
����
�X�X������B��d�j�j��B��&�&����$�C��
J��"$�J�J�A�q�!�Q��!��A��!��A���A�a���Q�q��3�q��8�b�=�"�s�1�Q�x�-�H�I�J�
J����B��d�k�k�!�B��&�&����#�C��
K��"$�K�J�A�q�!�Q��!��A��!��A���A�a��#�a��(�C��!�H�r�M�2��A�a��=�I�J�K�
K�
	
����
�q�T�F���	�A��"��A���t�A�a�D�y�Q�q�T�!�A�$�Y��Q�q�T�!�A�$���A�a�D��1���s�1�Q�4��!��~�c�!�A�$�q�QR�t�n�U��"�������	�
������
��V���a�L�	+�D�A�b��A��B��D��B��#�v�u� �T�z���A�"�"�C�#��B�$�1�Q�4��7�B�;��!�A�$�q�'�#�&���!�A�$�q�'�#�&���Q����B�$�1�Q�4��7�B�;��3�w��t�8��D�!�>�r�"�R��V�B�t�G�A�&>�Z�2�b��D��QS�TW�QW�XY�BZ�D��x�'��
�T�z��	�T�����:�2�c�6�"�R��4���":�V�r�"�S�&��D��QS�TU�>V���8�#�U��T�z��'	+�&�T�z�rAc��|j|j}}|r||_|r||_|jrL|j	|j|j|j�|j|j�nK|j	|j|j|j|j�|j�|j|j�|j�|j}gj}|j}t!|�D�]\}}gj}t!|�D]�\}	\}
}}}
d||
fvr�|j"}|rs|j$rgt'j&|�}|jj(dkxrdxsd}|�|}|
�|}
||j+|j$|||	|
|||
����|d���|j-||	�}|r.||j+||j.||	f||	|
|||
����|d���||j0���|j0S)zLInformation function, can be called by charts which want to mess with labelsNrrr)rPrOr�r�r�r�rmrornrpr�r�r�rNr�r.r�rWr_rcr�r�rPrRr�)r>r�r�rNr�r�rlrr�rrmrnrorprdr�r_s                 r?�_computeSimpleBarLabelPositionsz(BarChart._computeSimpleBarLabelPositionsks����"�"�D�N�N�B��
�R�r�{�
�R�r�{��<�<��N�N�4�?�?�4�6�6�$�*�*�=�t�v�v�t�{�{�S��N�N�4�6�6�4�?�?�4�6�6�$�+�+�#F��
�
�S�
���T�(�(�)������y�y���I�I��
�
�
��#�B�-�	�J�E�3��	�	�A�09�#��
 �,��,��1�e�V��E�&�>�)����B��b�g�g�!�Y�Y�r�]�� �N�N�4�4�a�7�A�E�I�T�� �=�!�%�!�>�A�6��$�4�4�R�W�W�b�%��PQ�ST�V[�]c�d�e��$���-�-�e�E�:�D���$�4�4�T�4�>�>�5�RW�.�;Y�[`�bg�ij�lm�ot�v|�}�~��$��!
 �"
�a�j�j�M�'	�(�z�z�rAc�t�t�}t�}|j||�|j|�|Sr�)rr�rk)r>rwr�s   r?r�zBarChart.makeBars�s.���G��
�W�����q���	���b�	��rAc�,�|jj}|j}t|�}t	tt
t|���}|dk(r#|dz
|jz||jzz}n|j}||j|zzS)z:for dynamically computing the desired category axis lengthr�r.)
rPrsrQrhr�r�r�rMrKrL)r>rsrQr��mrs      r?�_desiredCategoryAxisLengthz#BarChart._desiredCategoryAxisLength�s����!�!�'�'���y�y����I����S��T�]�#�$���*���A�#�t���.�q�����>�J����J��$�#�#�J�.�/�/rAc���|j|j}}|r||_|r||_|jr[|j	|j|j|j�|j|j�|j�S|j	|j|j|j|j�|j�|j�Sr�)rPrOr�r�r�r�rmrornrprr�s   r?�drawz
BarChart.draw�s����"�"�D�N�N�B��
�R�r�{�
�R�r�{��<�<��N�N�4�?�?�4�6�6�$�*�*�=�t�v�v�t�{�{�S����!�!�
�N�N�4�6�6�4�?�?�4�6�6�$�+�+�#F��
�
�S����!�!rArFr�)FN)F))rBrCrD�__doc__rr&rrr
rrr%rrr	rrErxr|r@r�r�r�r�r�rr�rPr\r`rer^r�r�r�r�r�r�r�r�r�rFrAr?rHrH4s���.��
�H�
�"�8�Y�x��(�@S�7T�,U�#V�^S�bc�d�
���/P�Q�
�$�H�3R�S�
�"�(�1Q�R�	
�
�D�'G�H�
�!��,G�H�

�$�D�/M�N�
��D�'X�Y�
�!��,O�P�
�&�d�2N�O�
�'�t�3V�ef�g�
�%�T�0y�z�
�(�	�8f�uv�w�
��7�>\�kl�m�
�#�4�.l�m�
�  ,�H�;z�{�!
�"!-�U�7�6�&�-I�P~� �#
�$!��,x�IJ�K�%
�&'�~�=��'
�8'�'?�Fo�~�A�9
�:#�:�j��q�PQ�UV�.W�`a�ij�no�#p�rW�X�;
�H�@!M�F=�;$�z��4#�8B�	`�F�P} �~�(�:g�
h�2'�h�c�J*(�X
 �>�@#�J�
0�"rArHc��eZdZdZdZy)�VerticalBarChartz3Vertical bar chart with multiple side-by-side bars.rN�rBrCrDr�r�rFrAr?r�r��s
��9��GrAr�c��eZdZdZdZy)�HorizontalBarChartz5Horizontal bar chart with multiple side-by-side bars.r.Nr�rFrAr?r�r��s
��;��GrAr�c�&�eZdZdd�Zd�Zd�Zd�Zy)�
_FakeGroupNc�F�g|_tj|�|_yr�)r��	functools�
cmp_to_key�_key)r>r)s  r?r@z_FakeGroup.__init__�s����
��(�(��-��	rAc�:�|jj|�yr�)r�r�)r>�whats  r?rkz_FakeGroup.add�s���
�
���$�rAc��|jSr�)r�r=s r?r[z_FakeGroup.value�s���z�z�rAc�P�|jj|j��y)N)�key)r�r�r�r=s r?r�z_FakeGroup.sort�s���
�
���D�I�I��&rAr�)rBrCrDr@rkr[r�rFrAr?r�r��s��.� ��'rAr�c
��eZdZeeeed��eed��eed��eed����ZdZdZ	dZ
dZd	�Zd
�Z
d�Zd�Zd
�Zy)r~zdx/dzr,zdy/dzzdepth of an individual serieszz gap around series)rI�theta_x�theta_y�zDepth�zSpacer;Nc�|�tj|�|j}|j}|�|j}|j
}|�|j}|jjdk(r||z|dz|zz}n|d|zz}||jz}|j|z|_|j|z|_
y)Nr�r.r�)rHr�r r�rKr�rMrPrsr%r��_3d_dxr��_3d_dy)r>r/r�r��	_3d_depths     r?r�zBarChart3D.calcBarPositions�s����!�!�$�'��'�'�������>�D�M�M�6������>�D�O�O�6����"�"�M�1�#�F�*�K��M�6�+A�A�I���6��)�I��T�%�%�%�	��l�l�9�,����l�l�9�,��rAc���|j}|�|j}|j}|�|j}|jj
dk(r|j|||zz|zz}|S|j|z}|S)Nr�)r�rKr�rMrPrsr%)r>rlr�r��z0s     r?�_calc_z0zBarChart3D._calc_z0�s~�������>�D�M�M�6������>�D�O�O�6����"�"�M�1��!�!�5�&��-�#8��#?�@�B��	��!�!�&�(�B��	rAc�v�|j}|�|j}|j}	|	�|j}	|j	|�}
|
||j
zz}|dkr||z
}|}||
|jzz
}||
|jzz
}|jr||	z
}n||	z
}|jd|
|||||||f	�y)Nr)
r�rKr�rMr�r%r�r�r�rk)r>rwrmrnrorprlrsr�r�r��z1s            r?r�zBarChart3D._makeBar�s��������>�D�M�M�6������>�D�O�O�6�
�]�]�5�
!��
�&��)�)�)�
)����7�
��J�A��F�E�	�R����_���	�R����_����<�<�
��K�A�
��K�A�	���q��B�q��5���e�4�5rAc��|j|�}|j}	|	�|j}	|}
|||jzz
}|||jzz
}|j
r||	z
}n||	z
}|j
d||
||||||f	�y)Nr.)r�r�rMr�r�r�rk)r>rwrlrrmrnrorpr�r�r�s           r?r`zBarChart3D._addBarLabel�s���
�]�]�5�
!�������>�D�O�O�6�
��	�R����_���	�R����_����<�<�
��K�A�
��K�A�	���q��B�q��5���e�4�5rAc���ddlm}t|j��}|j	||�|j�t
�}|j}|j}|j�}|jj}|dk(r|j�n'|dk(r"td�|D��D�cgc]}|d��	}}|D]\}	|	ddk(s�|	dd\}
}}}
}}}}||
z
}|||||z|
|
|z||z||z|jd|j|j d�	��^|D]2}	|	dk(s�	|	dd\}
}}}
}}}}t"j%||||||
||��4|Scc}w)
Nr)�_draw_3d_barr(rr�c3�DK�|]}|d|d|d|df|f���y�w)r.r�r�r�NrF)r��ts  r?r�z&BarChart3D.makeBars.<locals>.<genexpr>s.����-Z�A��!��Q�q�T�!�A�$�q��t�/D�Q�.G�-Z�s� r.g�������?)r2�fillColorShadedr1r3�shading)�!reportlab.graphics.charts.utils3dr�r��_cmpZr�r�rr�r�r[rPrs�reverser�r2r1r3rHr`)r>r��fgrwr�r��fg_valuer�rr�r�r�rmrnrorprlrs�dzrs                    r?r�zBarChart3D.makeBarss��B�
�D�J�J�
'�����r�"��
���	��G���,�,���,�,���8�8�:���#�#�)�)���I������
�g�
�&,�-Z�QY�-Z�&[�\���!��\�H�\��	*�A���t�Q�w�56�q�r�U�2��2�a��%��u�U��"�W���Q��1�U�7�A�q��x��G��R��Z�&+�o�o�t�(-�(9�(9�u�GX�GX�$(�*�		*��	K�A��!�t�56�q�r�U�2��2�a��%��u�U��%�%�d�1�U�5��1�U�6�J�	K����]s�6E)rBrCrDrrHrrrEr�r�r�r�r�r�r�r`r�rFrAr?r~r~�sg���H��x�g�6��x�g�6��h�-L�M��h�-B�C�	
�H��G��G�
�F�
�F�
-�	�6�$6�rAr~c��eZdZd�Zy)�VerticalBarChart3Dc�b�t|d|d|d|df|d|d|d|df�S)Nr.r�rr�r(�r>rr�s   r?�<lambda>zVerticalBarChart3D.<lambda>&sG��#��!��u�Q�q�T�!�A�$��!��u�5��!��u�Q�q�T�!�A�$��!��u�6M�N�rAN�rBrCrDr�rFrAr?r�r�%s��
N�ErAr�c��eZdZd�Zy)�HorizontalBarChart3Dc�b�t|d|d|d|df|d|d|d|df�S)Nr.r�rr�r(r�s   r?r�zHorizontalBarChart3D.<lambda>)sG��S�1�Q�4�%��!��Q�q�T�1�Q�4�%�!8�1�Q�4�%��!��Q�q�T�1�Q�4�%�9P�Q�rANr�rFrAr?r�r�(s��Q�ErAr�c�.�tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d	|j_
d
|jj_d|jj_d|jj_d
|jj_ddg|j_|j+|�|S)z9A slightly pathologic bar chart with only TWO data items.�r���
��2�}�,r�<��ne�ri��Ying�Yang�rr�rmrnrprorQrr�r1rO�valueMin�valueMax�	valueSteprPr,r�rnro�angle�
categoryNamesrk�r�rQr�s   r?�	sampleV0ar,s����c�3��G��:�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'+�B�O�O���$� !�B�O�O���� "�B�O�O����#%�B�O�O��� �%+�V�$4�B�O�O�!��K�K��O��NrAc�,�tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d|j_
d	|jj_d
|jj_d|jj_d|jj_d
g|j_|j+|�|S)z/A pathologic bar chart with only ONE data item.r�r���*r�r�r�rr�r�r�rir��Jan-99r�rs   r?�	sampleV0br
Ks����c�3��G��7�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'+�B�O�O���$� !�B�O�O���� "�B�O�O����#%�B�O�O��� �%-�J�B�O�O�!��K�K��O��NrAc���tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d	|j_
d
|jj_d|jj_d|jj_g|j_|j)|�|S)
z8A really pathologic bar chart with NO data items at all!r�r�rFr�r�r�rr�r�r�r�ri)rr�rmrnrprorQrr�r1rOr�rrrPr,r�rnrorrkrs   r?�	sampleV0cris����c�3��G��4�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'+�B�O�O���$� !�B�O�O���� "�B�O�O����$&�B�O�O�!��K�K��O��NrAc�|�tdd�}ddg}t�}d|_d|_d|_d|_||_tj|_	d|j_d	|j_d
|j_
d|jj_d|jj_d
|jj_d|jj_dj)d�}|D�cgc]}|dz��	}}||j_|j-|�|Scc}w)�!Sample of multi-series bar chart.r�r��r�r�r���%�-�r���r����&�.r�r�r�r�r�rr�r�r�r�rir��Jan Feb Mar Apr May Jun Jul Aug� �-99)rr�rmrnrprorQrr�r1rOr�rrrPr,r�rnrorr�rrk�r�rQr��catNamesr�s     r?�sampleV1r�s���c�3��G�
+�*��D�

�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'+�B�O�O���$� !�B�O�O���� "�B�O�O����#%�B�O�O��� �0�6�6�s�;�H�!)�*�A��%��*�H�*�$,�B�O�O�!��K�K��O��N��	+s�D9c���ddg}d}tdd�}t�}d|_d|_d|_d|_||_d	|_d
|_d
|_	d|j_d|j_d
|j_
d|jj_d|jj_d|jj_d|jj_||j&_d|j&j_d|j&j_d|j&j_|j-|�|S)r��333333@��������r�r�gffffff"@��333333�?皙��������r�g333333@�zQ3 2000zYear to Datez	12 monthszAnnualised
3 yearszSince 07.10.99r�r�r�r�r�rr���r�r��	Helveticar�r�r������rr�rmrnrprorQrMrLrKrOr�rrr,rkrlr�r�rPrrork�rQr,r�r�s    r?�	sampleV2ar.��$��
#�#��D�7�F��c�3��G�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��B�M��B�O��B�K��B�L�L���B�L�L���B�L�L��#.�B�L�L��� �#$�B�L�L��� �$'�B�L�L���!�%-�B�L�L���"�$*�B�O�O�!�&1�B�O�O���#�&'�B�O�O���#� #�B�O�O�����K�K��O��NrAc���ddg}d}tdd�}t�}d|_d|_d|_d|_||_d	|_d
|_d
|_	d|j_d|j_d	|j_
d
|jj_d|jj_d|jj_d|jj_||j&_d
|j&j_d|j&j_d|j&j_|j-|�|S)rr!r$r(r�r�r�r�r�r�r�r)r�r*r�r�r�r+r,r-s    r?�	sampleV2br1�r/rAc��ddg}d}tdd�}t�}d|_d|_d|_d|_||_d	|_d
|_d
|_	d|j_d|j_d
|j_
d|jj_d|jj_||j"_d|j"j_d|j"j_d|jj_d|jj_d|j"j_d
|j,_d|_d|j,_d|j,_d|j,_d|j,_d|j,_|j5|�|S)r�r"r#r�r��{�G�#@�r%r&r'r�r4r(r�r�r�r�r�r�r�r)r�r�r*r�r�r�r+�%0.2frr�)rr�rmrnrprorQrMrLrKrOr�rrr,rkrlrPrr�r�rorRr�rSrnrkr-s    r?�	sampleV2cr7�sr��
$�$��D�7�F��c�3��G�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��B�M��B�O��B�K��B�L�L���B�L�L���B�L�L��#.�B�L�L��� �#$�B�L�L��� �$*�B�O�O�!�&1�B�O�O���#�&'�B�O�O���#�$'�B�L�L���!�%-�B�L�L���"� #�B�O�O�����B�L�L���B���B�L�L�O��B�L�L�O� �B�L�L��'�B�L�L���B�L�L���K�K��O��NrAc���d}d}d}t|�t|�k(sJd��t|�t|�k(sJd��tdd�}t�}d|_d|_d|_d	|_|f|_tj|j_d
|_d|j_d|j_d|j_d|j_d
|j_d|j_d|j_d|j*_d|j*_d|j*_d|j*_d|j4_d|j4_||j4_d|j4j<_d|j4j<_d|j4j<_d|j4j<_d
|j4j<_d|j4j<_t?|�}|jAdd�|jCd�|jE|�|S)zBFaked horizontal bar chart using a vertical real one (deprecated).�
zUK EquitieszUS EquitieszEuropean EquitieszJapanese EquitieszPacific (ex Japan) EquitieszEmerging Markets EquitieszUK BondszOverseas BondszUK Index-Linked�Cash�
g���333333�?r;rg�������?gffffff�?g�������?g�������?rr<�
g���Q��?g�������?皙�����?g)\��(�?g�p=
ף�?g)\��(�?g)\��(�?r?r>�bad datar�r�rr��r6r�r�r*r�r�rir�r.i�����i����)#rhrr�rmrnrprorQrr�rNr2rSrRrnror�rrkrlr�rOrjr�rrrP�tickUp�tickDownrr,r�	translate�rotaterk��names�series1�series2r�r�rws      r?�sampleV3rK-s���
G�E�B�G�H�G��u�:��W��%�1�z�1�%��u�:��W��%�1�z�1�%��c�3��G�	�	�B��B�D��B�D��B�I��B�H��j�B�G����B�G�G���B���B�L�L�O��B�L�L�O� �B�L�L���B�L�L��'�B�L�L���B�L�L���B�L�L���B�L�L���B�L�L���B�L�L���B�L�L���B�O�O�� �B�O�O��$)�B�O�O�!�#%�B�O�O��� �'*�B�O�O���$� !�B�O�O���� $�B�O�O����&1�B�O�O���#�&'�B�O�O���#�
�b�	�A��K�K��S���H�H�S�M��K�K��N��NrAc���tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d	|j_
d
|jj_d|jj_dd
g|j_|j'|�|S)�AA bar chart showing value axis region starting at *exactly* zero.r�r�r�r�r�r�rr�r�r����r�r��rr�rmrnrprorQrr�r1rOr�rrrPr,r�rorrkrs   r?�	sampleV4arPes����c�3��G��:�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'*�B�O�O���$� "�B�O�O����%+�V�$4�B�O�O�!��K�K��O��NrAc���tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d	|j_
d
|jj_d|jj_dd
g|j_|j'|�|S)�<A bar chart showing value axis region starting *below* zero.r�r�r�r�r�r����r�r�r�rNr�r�rOrs   r?�	sampleV4brT�s����c�3��G��:�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'*�B�O�O���$� "�B�O�O����%+�V�$4�B�O�O�!��K�K��O��NrAc���tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d	|j_
d
|jj_d|jj_dd
g|j_|j'|�|S)z;A bar chart showing value axis region staring *above* zero.r�r�r�r�r�r�r�r�r�r�rNr�r�rOrs   r?�	sampleV4crV�s����c�3��G��:�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'*�B�O�O���$� "�B�O�O����%+�V�$4�B�O�O�!��K�K��O��NrAc���tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d	|j_
d
|jj_d|jj_dd
g|j_|j'|�|S)�<A bar chart showing value axis region entirely *below* zero.r�r��i�i��r�r�r����rSr�r�rNr�r�rOrs   r?�	sampleV4dr[�s����c�3��G��<�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'*�B�O�O���$� "�B�O�O����%+�V�$4�B�O�O�!��K�K��O��NrA))r�r�)r�r�)r��()r\r�c���tdd�}t}t�}d|_d|_d|_d|_||_tj|_
d|j_d|j_
d|j_d	|jj _d
|jj _ddg|j_|j)|�|S)
�8A simple bar chart with no expressed spacing attributes.r�r�r�r�r�rr�r�r�rNr�r�)r�dataSample5r�rmrnrprorQrr�r1rOr�rrrPr,r�rorrkrs   r?�	sampleV5ar`�s����c�3��G��D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'*�B�O�O���$� "�B�O�O����%+�V�$4�B�O�O�!��K�K��O��NrAc��tdd�}t}t�}d|_d|_d|_d|_||_tj|_
d|_d|_d|_
d	|_d|j_d
|j_d|j_d|j&j(_d
|j&j(_ddg|j&_|j1|�|S)�-A simple bar chart with proportional spacing.r�r�r�r�r�rr\r�r�r�r�r�rNr�r��rr_r�rmrnrprorQrr�r1rJrKrLrMrOr�rrrPr,r�rorrkrs   r?�	sampleV5brd������c�3��G��D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�N��B�K��B�O��B�M��B�L�L���B�L�L���B�L�L��'*�B�O�O���$� "�B�O�O����%+�V�$4�B�O�O�!��K�K��O��NrAc��tdd�}t}t�}d|_d|_d|_d|_||_tj|_
d|_d|_d|_
d|_d|j_d	|j_d
|j_d|j&j(_d|j&j(_d
dg|j&_|j1|�|S)�6Make sampe simple bar chart but with absolute spacing.r�r�r�r�r�r.r\rr�r�r�rNr�r�rcrs   r?�
sampleV5c1rhs����c�3��G��D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�N��B�K��B�O��B�M��B�L�L���B�L�L���B�L�L��'*�B�O�O���$� "�B�O�O����%+�V�$4�B�O�O�!��K�K��O��NrAc��tdd�}t}t�}d|_d|_d|_d|_||_tj|_
d|_d|_d|_
d	|_d	|j_d
|j_d|j_d|j&j(_d
|j&j(_ddg|j&_|j1|�|S)rgr�r�r�r�r�r.r\r�rr�r�r�rNr�r�rcrs   r?�
sampleV5c2rj=s����c�3��G��D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�N��B�K��B�O��B�M��B�L�L���B�L�L���B�L�L��'*�B�O�O���$� "�B�O�O����%+�V�$4�B�O�O�!��K�K��O��NrAc��tdd�}t}t�}d|_d|_d|_d|_||_tj|_
d|_d|_d|_
d	|_d|j_d
|j_d|j_d|j&j(_d
|j&j(_ddg|j&_|j1|�|S)rgr�r�r�r�r�r.r\rr�r�r�r�rNr�r�rcrs   r?�
sampleV5c3rl^s����c�3��G��D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�N��B�K��B�O��B�M��B�L�L���B�L�L���B�L�L��'*�B�O�O���$� "�B�O�O����%+�V�$4�B�O�O�!��K�K��O��NrAc��tdd�}t}t�}d|_d|_d|_d|_||_tj|_
d|_d|_d|_
d	|_d
|j_d|j_d|j_d
|j&j(_d|j&j(_ddg|j&_|j1|�|S)rgr�r�r�r�r�r.r\r�r�rr�r�r�rNr�r�rcrs   r?�
sampleV5c4rnrerAc���tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d	|j_
d
|jj_d|jj_dd
g|j_|j'|�|S)z>Make a slightly pathologic bar chart with only TWO data items.r�r�r�r�r�r�rr�r��ser�r�r��rr�rmrnrprorQrr�r1rOr�rrrPr,r�rrrkrs   r?�	sampleH0arr�s����c�3��G��:�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'+�B�O�O���$�#%�B�O�O��� �%+�V�$4�B�O�O�!��K�K��O��NrAc��tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d|j_
d	|jj_d
|jj_dg|j_|j'|�|S)z4Make a pathologic bar chart with only ONE data item.r�r�rr�r�r�rr�rpr�r	rqrs   r?�	sampleH0brt�s����c�3��G��7�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'+�B�O�O���$�#%�B�O�O��� �%-�J�B�O�O�!��K�K��O��NrAc��tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d	|j_
d
|jj_d|jj_g|j_|j'|�|S)z=Make a really pathologic bar chart with NO data items at all!r�r�rFr�r�r�rr�r�rpr�rqrs   r?�	sampleH0crv�s����c�3��G��4�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'+�B�O�O���$�#%�B�O�O��� �$&�B�O�O�!��K�K��O��NrAc���tdd�}ddg}t�}d|_d|_d|_d|_||_tj|_	d|j_d	|j_d
|j_
d|jj_dj#d
�}|D�cgc]}|dz��	}}||j_|j'|d�|Scc}w)rr�r�rrr�r�r�rr�r��errr�barchart)rr�rmrnrprorQrr�r1rOr�rrrPr,r�r�rrkrs     r?�sampleH1rz�s����c�3��G�
+�*��D�

�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'*�B�O�O���$�0�6�6�s�;�H�!)�*�A��%��*�H�*�$,�B�O�O�!��K�K��J���N��	+s�6C)c��ddg}d}tdd�}t�}d|_d|_d|_d	|_||_d
|_d|_d|_	d|j_d
|j_d|j_
d|jj_d|jj_d|jj_d|jj_|jj'|j�||j(_d|j(j_d|j(j_d|j(j_|j/|�|S)rr!r$r(r�r�r�r�r�r�rr�r)r�r�r*r�r�r��j���)rr�rmrnrprorQrMrLrKrOr�rrr,rkrlr�r�r�rPrrnrkr-s    r?�	sampleH2ar}s:��
#�#��D�7�F��c�3��G�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��B�M��B�O��B�K��B�L�L���B�L�L���B�L�L��#.�B�L�L��� �#$�B�L�L��� �$'�B�L�L���!�%-�B�L�L���"��L�L���2�7�7�#�$*�B�O�O�!�&1�B�O�O���#�&'�B�O�O���#� $�B�O�O�����K�K��O��NrAc���ddg}d}tdd�}t�}d|_d|_d|_d	|_||_d
|_d|_d|_	d|j_d
|j_d
|j_
d|jj_d|jj_d|jj_d|jj_||j&_d|j&j_d|j&j_d|j&j_|j-|�|S)rr!r$r(r�r�r�r�r�r�r�r�r)r�r*r�r�r�r|)rr�rmrnrprorQrMrLrKrOr�rrr,rkrlr�r�rPrrnrkr-s    r?�	sampleH2br@s$��
#�#��D�7�F��c�3��G�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��B�M��B�O��B�K��B�L�L���B�L�L���B�L�L��#.�B�L�L��� �#$�B�L�L��� �$'�B�L�L���!�%-�B�L�L���"�$*�B�O�O�!�&1�B�O�O���#�&'�B�O�O���#� $�B�O�O�����K�K��O��NrAc��ddg}d}tdd�}t�}d|_d|_d|_d	|_||_d
|_d|_d|_	d|j_d
|j_d|j_
d|jj_d|jj_d|jj_d|jj_||j&_d|j&j_d|j&j_d|j&j_d|j,_d|_d|j,_d|j,_d|j,_d|j,_d|j,_|j5|�|S)rr3r5r(r�r�r�r�r�r�r�r�r)r�r�r*r�r�r�r|r6rr�)rr�rmrnrprorQrMrLrKrOr�rrr,rkrlr�r�rPrrnrRr�rSrorkr-s    r?�	sampleH2cr�isr��
$�$��D�7�F��c�3��G�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��B�M��B�O��B�K��B�L�L���B�L�L���B�L�L��#.�B�L�L��� �#$�B�L�L��� �$'�B�L�L���!�%-�B�L�L���"�$*�B�O�O�!�&1�B�O�O���#�&'�B�O�O���#� $�B�O�O�����B�L�L���B���B�L�L�O��B�L�L�O� �B�L�L��'�B�L�L���B�L�L���K�K��O��NrAc��d}d}d}t|�t|�k(sJd��t|�t|�k(sJd��tdd�}t�}d|_d|_d	|_d
|_|f|_tj|j_d|_d|j_d|j_d
|j_d|j_d|j_d|j_d|j(_d|j(_d|j(_d|j(_d|j2_d|j2_||j2_d
|j2j:_d|j2j:_d|j2j:_d|j2j:_t=|�}|j?|�|S)zEA really horizontal bar chart (compared to the equivalent faked one).r9r;r=r@r�r�r�r�rA�r6rr�r*r�r�rir�r.iV���) rhrr�rmrnrprorQrr�rNr2rSrRrnror�rkrlr�rOrjr�rrrP�tickLeft�	tickRightrr,rrkrGs      r?�sampleH3r��s���
G�E�B�G�H�G��u�:��W��%�1�z�1�%��u�:��W��%�1�z�1�%��c�3��G�	�	�B��B�D�
�B�D��B�I��B�H��j�B�G����B�G�G���B���B�L�L�O��B�L�L�O� �B�L�L��'�B�L�L���B�L�L���B�L�L���B�L�L���B�L�L���B�L�L���B�L�L�� �B�O�O�� !�B�O�O��$)�B�O�O�!�'*�B�O�O���$� $�B�O�O����&1�B�O�O���#�&'�B�O�O���#�
�b�	�A��K�K��N��NrAc��tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d	|j_
d
|jj_ddg|j_|j%|�|S)
rMr�r�r�r�r�r�rr�r�rxr�r��rr�rmrnrprorQrr�r1rOr�rrrPr,r�rrkrs   r?�	sampleH4ar��s����c�3��G��:�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'*�B�O�O���$�%+�V�$4�B�O�O�!��K�K��O��NrAc��tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d	|j_
d
|jj_ddg|j_|j%|�|S)
rRr�r�r�r�r�r�rSr�r�rxr�r�r�rs   r?�	sampleH4br��s����c�3��G��:�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'*�B�O�O���$�%+�V�$4�B�O�O�!��K�K��O��NrAc��tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d	|j_
d
|jj_ddg|j_|j%|�|S)
z<A bar chart showing value axis region starting *above* zero.r�r�r�r�r�r�r�r�r�rxr�r�r�rs   r?�	sampleH4cr�s����c�3��G��:�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'*�B�O�O���$�%+�V�$4�B�O�O�!��K�K��O��NrAc��tdd�}dg}t�}d|_d|_d|_d|_||_tj|_	d|j_d|j_d	|j_
d
|jj_ddg|j_|j%|�|S)
rXr�r�rYr�r�r�rZrSr�rxr�r�r�rs   r?�	sampleH4dr�!s����c�3��G��<�D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'*�B�O�O���$�%+�V�$4�B�O�O�!��K�K��O��NrAc��tdd�}t}t�}d|_d|_d|_d|_||_tj|_
d|j_d|j_
d|j_d	|jj _d
dg|j_|j'|�|S)r^r�r�r�r�r�rr�r�rxr�r�)rr_r�rmrnrprorQrr�r1rOr�rrrPr,r�rrkrs   r?�	sampleH5ar�?s����c�3��G��D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�L�L���B�L�L���B�L�L��'*�B�O�O���$�%+�V�$4�B�O�O�!��K�K��O��NrAc���tdd�}t}t�}d|_d|_d|_d|_||_tj|_
d|_d|_d|_
d	|_d|j_d
|j_d|j_d|j&j(_d
dg|j&_|j/|�|S)rbr�r�r�r�r�rr\r�r�r�r�rxr�r��rr_r�rmrnrprorQrr�r1rJrKrLrMrOr�rrrPr,r�rrkrs   r?�	sampleH5br�Z����c�3��G��D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�N��B�K��B�O��B�M��B�L�L���B�L�L���B�L�L��'*�B�O�O���$�%+�V�$4�B�O�O�!��K�K��O��NrAc���tdd�}t}t�}d|_d|_d|_d|_||_tj|_
d|_d|_d|_
d|_d|j_d	|j_d
|j_d|j&j(_dd
g|j&_|j/|�|S)z)A simple bar chart with absolute spacing.r�r�r�r�r�r.r�rr�r�rxr�r�r�rs   r?�
sampleH5c1r�z����c�3��G��D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�N��B�K��B�O��B�M��B�L�L���B�L�L���B�L�L��'*�B�O�O���$�%+�V�$4�B�O�O�!��K�K��O��NrAc���tdd�}t}t�}d|_d|_d|_d|_||_tj|_
d|_d|_d|_
d	|_d	|j_d
|j_d|j_d|j&j(_d
dg|j&_|j/|�|S��'Simple bar chart with absolute spacing.r�r�r�r�r�r.r�r�rr�r�rxr�r�r�rs   r?�
sampleH5c2r��s����c�3��G��D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�N��B�K��B�O��B�M��B�L�L���B�L�L���B�L�L��'*�B�O�O���$�%+�V�$4�B�O�O�!��K�K��O��NrAc���tdd�}t}t�}d|_d|_d|_d|_||_tj|_
d|_d|_d	|_
d
|_d	|j_d|j_d|j_d
|j&j(_ddg|j&_|j/|�|S)r�r�r�r�r��r�r.r�rr�r�r�rxr�r�r�rs   r?�
sampleH5c3r��r�rAc���tdd�}t}t�}d|_d|_d|_d|_||_tj|_
d|_d|_d|_
d|_d	|j_d
|j_d|j_d|j&j(_d
dg|j&_|j/|�|Sr�r�rs   r?�
sampleH5c4r��r�rAc���tdd�}t}t�}d|_d|_d|_d|_||_tj|_
d|_d|_d|_
d	|j_d
|j_d|j_d|j$j&_dd
g|j$_d	dlm}|�}tj|_tj2|_d|_d	|_|�}tj|_tj:|_d|_d	|_|�}tj2|_tj<|_d|_d|_d	|_||j@_!||j@d_!||j@d_!|jE|�|S)�(Simple bar chart using symbol attribute.r�r�r�r�r�r�r�r�rr�rxr�r���
ShadedRect�
horizontal�verticalr.r�)#rr_r�rmrnrprorQrr�r1rKrLrMrOr�rrrPr,r�r� reportlab.graphics.widgets.gridsr��fillColorStartr<�fillColorEnd�orientationr3�pink�white�cylinderModerNr5rk)r�rQr�r��sym1�sym2�sym3s       r?�
sampleSymbol1r��sz���c�3��G��D�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�K��B�O��B�M��B�L�L���B�L�L���B�L�L��'*�B�O�O���$�%+�V�$4�B�O�O�!�;��<�D� �,�,�D�����D��#�D���D���<�D� �,�,�D�����D��#�D���D���<�D� �+�+�D�����D��!�D���D���D���B�G�G�N��B�G�G�A�J���B�G�G�A�J���K�K��O��NrAc���tdd�}t}t�}d|j_d|_d|_d|_d|_||_	tj|_d|_
d|_d	|j_d
|jj"_ddg|j_d	d
lm}|�|j,_tj0|j,j._tj4|j,j._d|j,j._d|j,j._d	|j,j._|�|j,d_tj>|j,dj._tj4|j,dj._d|j,dj._d|j,dj._d	|j,dj._|�|j,d_tj@|j,dj._tj4|j,dj._d|j,dj._d|j,dj._d	|j,dj._|�|j,d_tjB|j,dj._tj4|j,dj._d|j,dj._d|j,dj._d	|j,dj._|jE|�|S)r�r�r�rr�r�r�r�r�rrxr�r�r�r�r.r�r�)#rr_r�rPrsrmrnrprorQrr�r1rKrLrOr�r,r�rr�r�rNr5r�r�r�r�r�r�r3�magentar�r<rk)r�rQr�r�s    r?�sampleStacked1r�/	s����c�3��G��D�	�	�B�%�B�O�O��
�B�D�
�B�D��B�I��B�H��B�G��\�\�B�N��B�K��B�O��B�L�L��'*�B�O�O���$�%+�V�$4�B�O�O�!�;��\�B�G�G�N�$*�J�J�B�G�G�N�N�!�"(�,�,�B�G�G�N�N��!+�B�G�G�N�N��"#�B�G�G�N�N��!"�B�G�G�N�N��"��B�G�G�A�J��'-�~�~�B�G�G�A�J���$�%+�\�\�B�G�G�A�J���"�$.�B�G�G�A�J���!�%&�B�G�G�A�J���"�$%�B�G�G�A�J���!�"��B�G�G�A�J��'-�|�|�B�G�G�A�J���$�%+�\�\�B�G�G�A�J���"�$.�B�G�G�A�J���!�%&�B�G�G�A�J���"�$%�B�G�G�A�J���!�"��B�G�G�A�J��'-�{�{�B�G�G�A�J���$�%+�\�\�B�G�G�A�J���"�$.�B�G�G�A�J���!�%&�B�G�G�A�J���"�$%�B�G�G�A�J���!��K�K��O��NrAc��eZdZdZdd�Zy)�
SampleH5c4r�c��tj|||g|��i|��t�}d|_d|_d|_d|_t|_tj|_d|_d|_
d|_d|_d|j _d|j _d	|j _d
|j(j*_ddg|j(_|j1|d
��|j3�y)Nr�r�r�r.r�r�rr�r�rxr�r��HBC)r6)rr@r�rmrnrpror_rQrr�r1rJrKrLrMrOr�rrrPr,r�rrkr�)r>rorp�args�kwr�s      r?r@zSampleH5c4.__init__k	s�������e�F�6�D�6�2�6�
�
!����������	�����������������������
� !����� "�����!#�����+.������(�)/��(8����%��������
�*�*�,rAN)r�r�)rBrCrDr�r@rFrAr?r�r�h	s
��-�-rAr�)h�__version__r�rcr��astr�
reportlab.libr�reportlab.lib.validatorsrrrrr	r
rrr
rrr�reportlab.lib.utilsrr�"reportlab.graphics.widgets.markersrr�reportlab.lib.attrmaprr�reportlab.pdfbase.pdfmetricsr�reportlab.graphics.widgetbaserrr�reportlab.graphics.shapesrrrrr�reportlab.graphics.charts.axesr r!r"r#�$reportlab.graphics.charts.textlabelsr$r%�reportlab.graphics.charts.areasr&�!reportlab.graphics.charts.legendsr'�	reportlabr)r+rHr�r�r�r~r�r�rr
rrr.r1r7rKrPrTrVr[r_r`rdrhrjrlrnrrrtrvrzr}rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rFrAr?�<module>r�s���
��	���� �B�B�B�B�7�G�7�4�Y�Y�J�J�_�_�X�4�5��$��$�*w
"�x�w
"�r�x�����'�'�`��`�DO��$4�O�R�:�&8�R��>�<�: �F&�R&�R/�d5�p�:�:�:�B7���8�B�B�B�B�F�:�8�8�>'�T&�R/�d/�d�8�8�8�87���6�@�@�@�@�>4�l6�r-��-rA

Zerion Mini Shell 1.0