403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.85
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/reportlab/graphics/charts/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/reportlab/graphics/charts/__pycache__/barcharts.cpython-311.pyc
�

}G�b[���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(��ZgdS)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�ZdS)�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�`�d|_tj|_d|_d|_d|_dS)N��?)r1r�bluer2r3r5r4��selfs �E/usr/lib/python3/dist-packages/reportlab/graphics/charts/barcharts.py�__init__zBarChartProperties.__init__,s0���������������#�����)�__name__�
__module__�__qualname__rrrrr
rrrrr
�_attrMapr@�rAr?r+r+s��������w�"�l�=�7Q�R�R�R� �L��5V�W�W�W�"�l�8�2L�M�M�M�&�,�'<�CZ�[�[�[���d�)W�fg�h�h�h��|�H�+]�^�^�^�#�|�F�F�8�$4�$4�;^�mn�o�o�o��<��5_�`�`�`���f�f�Y�/�/�6]�^�^�^�

�

�

�H�$�$�$�$�$rAr+c��eZdZdZedOide�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�ZdPd7�Zd8�Zd9�Zd:�Zd;�Zd<�Zd=�Zd>�Zd?�Zd@�ZdA�ZdB�ZdQdD�ZdRdE�ZdF�Z dG�Z!dH�Z"dI�Z#dJ�Z$dK�Z%dL�Z&dM�Z'dN�Z(dS)S�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
��|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||jp|j|j	|j
�
��}|r$t|||dzz||jp|j��}|r<|r:t��}|�|��|�|��|S|p|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�	��3�y�>�>�)���(�#���e�]�G�I�m�TX�4Y�4Y�Z�Z���E�;��	�+�d�0S�0S�T�T�	�!�%�):�G�I�N_�`d�<e�<e�f�f���e�]�G�E�=�QU�4V�4V�W�W���u�n�g�i��X\�6]�6]�^�^���	M�!�,�q��r��z�!�F�2�I�+�i�P�P�P�
�U�8�E�
*�
*�	M��F�2�I�+�C��u�h�'�'�
��L�����H�-�-�
��$������Q�s�A�e�G�S� %� 1� D�U�_� %� 1�&+�&;�=�=�=�A�
�[�n�Q�q��r��z�#�e�6G�6Z�5�?�[�[�!��
�Q�
��G�G�����a�������a�������6��M���!�E�&�[�[�(7�)�M�M�M�
MrAc�T�tt|j|d|����S)zreturn series name i or defaultr6)r'rirN)r>�i�defaults   r?�
getSeriesNamezBarChart.getSeriesNamezs"���w�t�y��|�F�7�;�;�<�<�<rAc���|jjdvsJd|jjz���|jr't��|_t��|_n&t��|_t��|_tdddd��|jj
d_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>j#|jd_$t>j%|jd_$t>j&|jd_$dx|_'|_(d|_)dS)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�G�G�Ii�lp�lz�mD�JD�G�G�G��<�	*� -���D��'�\�\�D�N�N� -���D��'�\�\�D�N�7<�Y�z�R_�`g�7h�7h���"�7�+�4���$������� !���'�$�&��	������
�������0��?�?���#&��� �$,���!�"���!��� !����,�,>�?�?��	� !��	�� &���	��$(��	�!�!'���	�!���!'���	�!���!'���	�!���.2�2���t�+�#����rAc��|jjdkrtd���tdd��}|���}|�|��|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�sS���>�"�J�.�.�%�&K�L�L�L��#�s�#�#��
�^�^�
�
�����B�����rAc�n��	�t|dd��}t|j���	|sd�t�	��D��}n�|j�tt�	����}t��}g}|D]X}�	fd�|D��}�fd�|D��}|r||z}||z}||z}|r'|�t|����||z}�Y|r,|�d�t|��D����|r,|�d�t|��D����||_
dS)Nrac��g|]}|f��SrFrF��.0�sss  r?�
<listcomp>z+BarChart.getSeriesOrder.<locals>.<listcomp>�s��*�*�*�2�"��*�*�*rAc�4��h|]}d|cxkr�k�nn|��S)rrF)r�r��ns  �r?�	<setcomp>z*BarChart.getSeriesOrder.<locals>.<setcomp>�s.���0�0�0�B�q�"�x�x�x�x�a�x�x�x�x�x�R�x�x�xrAc�B��h|]}��|dd���|��S)r9F)�	checkAttr)r�r�rNs  �r?r�z*BarChart.getSeriesOrder.<locals>.<setcomp>�s.���J�J�J�R����r�(�5�(I�(I�J�b�J�J�JrAc3�K�|]}|fV��dS�NrFr�s  r?�	<genexpr>z*BarChart.getSeriesOrder.<locals>.<genexpr>�s$����8�8�2�"��8�8�8�8�8�8rAc3�K�|]}|fV��dSr�rFr�s  r?r�z*BarChart.getSeriesOrder.<locals>.<genexpr>�s$����7�7�2�"��7�7�7�7�7�7rA)rirhrQ�rangerN�set�append�tuple�extend�sorted�_seriesOrder)
r>�bs�R�unseen�lines�srw�glrNr�s
        @@r?�getSeriesOrderzBarChart.getSeriesOrder�se����
�T�-��
-�
-����	�N�N���	8�*�*��q���*�*�*�A�A��9�D���q���]�]�F��E�E�E��A��	
 �	
 ��0�0�0�0�!�0�0�0��J�J�J�J�1�J�J�J���!���G�A��R�K�E��b�L�F�� ��H�H�U�1�X�X�&�&�&��a�K�F���
9����8�8�����8�8�8�8�8�8��
8����7�7�����7�7�7�7�7�7�����rAc�,���|jj}|j�tt	tt�������}��|dvrBg��fd�}|dkr|��n/|���|jD]}|�fd�|D�����|_	dS)N�r�r�c�4��td�|D����dgz}|dd�}|D]B}t|��D]0\}}|pd}|dkr||xx|z
cc<� ||xx|z
cc<�1�C��|����|��dS)Nc3�4K�|]}t|��V��dSr�)rh)r��ds  r?r�zBBarChart._getConfigureData.<locals>._accumulate.<locals>.<genexpr>�s(����/�/��S��V�V�/�/�/�/�/�/rAr���ư�)�max�	enumerater�)�D�pdata�ndatar�rz�vrQs      �r?�_accumulatez/BarChart._getConfigureData.<locals>._accumulate�s�����/�/�Q�/�/�/�0�0�!��4���a�a�a����*�*�A�(��|�|�*�*���!��F����e�8�8�!�!�H�H�H��M�H�H�H�H�!�!�H�H�H��M�H�H�H�H�*����E�"�"�"����E�"�"�"�"�"rArc3�(�K�|]}�|V��
dSr�rF)r��j�_datas  �r?r�z-BarChart._getConfigureData.<locals>.<genexpr>�s'�����!6�!6�q�%��(�!6�!6�!6�!6�!6�!6rA)
rPrsrQr��list�maprhr�r��_configureData)r>�cAStyle�ccr��br�rQs     @@r?�_getConfigureDatazBarChart._getConfigureData�s������#�)���y��
��c�#�d�m�m�$�$�
%�
%�����4�4�4��D�
#�
#�
#�
#�
#��	�!�!���U�#�#�#��#�#�%�%�%��*�8�8�A��K�!6�!6�!6�!6�A�!6�!6�!6�7�7�7�"����rAc��|���|j�|j��|jj|jjfS)z Attempt to return the data range)r�rO�	_setRanger��	_valueMin�	_valueMaxr=s r?�
_getMinMaxzBarChart._getMinMax�sB����� � � ��� � ��!4�5�5�5��~�'���)A�A�ArAc��|j}|�|j|j|��|���|�|j��|�d��}|js||kr|||zkr|n|S)z8Position and configure value axis, return crossing valuer)	rO�setPositionrmrnr��	configurer��scale�	forceZero)r>�org�length�vA�	crossesAts     r?�
_drawBeginzBarChart._drawBegins���
�^��
���t�v�t�v�v�.�.�.���� � � �
���T�(�)�)�)��H�H�Q�K�K�	��L�_�Y��^�^�	�3�v�:�@U�@U�y�y�\_�_rAc�
�
�|j}|j}|�|j��|���t��}t
|dd��}|�sV|�|�����t
|dd��}t
|dd��}|s|�	|||j
���|s|�	|||j
���|�|�����|�|��|�|��|r|�	|||j
���|r|�	|||j
���t
|dd��D],}|�|||j|j�����-�nJtdd	d
ddd
dd����
|����d��D�]v}|���}|s�	|�d��\}	}
n[#t!d|�d|�dd��
fd�t%�
�����D���������xYw|	�
vrVt!d|	�d�
�dd��
fd�t%�
�����D���������	t)|
��}
t+|
t,t.f��sJ�nY#t!d|
||d��
fd�t%�
�����D����fz���xYw|
�
|	<��xd��
���D���
�
���|���}|j�d��}�
D�]0\}
}	|	dkr(|�|������4|	dkr|�|���P|	d kr|�	|||j
����t|	d!kr|�|����|	d"kr|�	|||j
�����|	d#kr|�|����|	d$kr|�|����|	dkr>t
|dd��D],}|�|||j|j�����-��2|`|S)%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
�
c�*��g|]}|�d�|����S�r�rF�r��k�Zs  �r?r�z(BarChart._drawFinish.<locals>.<listcomp>1sl���@m�@m�@m�WX�KL�KL�KL�MN�OP�MQ�MQ�AR�@m�@m�@mrAzUnknown zIndex variable c�*��g|]}|�d�|����Sr�rFr�s  �r?r�z(BarChart._drawFinish.<locals>.<listcomp>3sl���ub�ub�ub�LM�@A�@A�@A�BC�DE�BF�BF�vG�ub�ub�ubrAzCBad zIndex value %r in clause %r of zIndex
allowed variables are
%sc�*��g|]}|�d�|����Sr�rFr�s  �r?r�z(BarChart._drawFinish.<locals>.<listcomp>8sl���Fs�Fs�Fs�]^�QR�QR�QR�ST�UV�SW�SW�GX�Fs�Fs�FsrAc��g|]	\}}||f��
SrFrF)r�r�r�s   r?r�z(BarChart._drawFinish.<locals>.<listcomp>:s ��,�,�,�3�1�Q�!�A��,�,�,rA���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�zr�r�r��blr�s             @r?�_drawFinishzBarChart._drawFinishs$���
�
��
�^��
���T�(�)�)�)��������G�G����/��5�5���:	^�
�E�E�$�%�%�'�'�(�(�(��B�~�e�4�4�E��B�~�e�4�4�E��H�"�+�+�a�t���+�H�H�H��H�"�+�+�a�t���+�H�H�H�
�E�E�$�-�-�/�/�"�"�"�
�E�E�"�I�I�I�
�E�E�"�I�I�I��D�b�k�k�!�4�R�^�k�D�D�D��D�b�k�k�!�4�R�^�k�D�D�D��T�-��3�3�U�U��Q�U�U�1�1�T�"�(�2�8�;T�;T�5U�5U�5U�5U�U�������!"���	�	�	�A��\�\�^�^�)�)�#�.�.�
�
���G�G�I�I���"�(�p�������C�A�a�a��p�$�*�lm�lm�lm�nt�nt�nt�uy�u~�u~�@m�@m�@m�@m�\b�cd�ci�ci�ck�ck�\l�\l�@m�@m�@m�vn�vn�vn�&o�p�p�p�����A�:�:�$�*�fg�fg�fg�hi�hi�hi�jn�js�js�ub�ub�ub�ub�QW�XY�X^�X^�X`�X`�Qa�Qa�ub�ub�ub�kc�kc�kc�&d�e�e�e�v�$�Q���A�%�a��s��4�4�4�4�4�4��v�$�%l�pq�rs�tz�{�|E�|E�Fs�Fs�Fs�Fs�bh�ij�io�io�iq�iq�br�br�Fs�Fs�Fs�|t�|t�pu�&u�v�v�v������!���,�,�!�'�'�)�)�,�,�,�A�
�F�F�H�H�H��
�
���A������#�#�B��
^�
^���!��l�?�?��E�E�$�-�-�/�/�0�0�0�0���&�&��E�E�"�I�I�I�I��*�*�*��K�K���2�>�K�B�B�B�B���^�^��E�E�"�I�I�I�I���'�'��K�K���2�>�K�B�B�B�B���Y�Y��E�E�!�H�H�H�H���^�^��E�E�"�I�I�I�I��
�%�%�$�T�-��;�;�]�]��Q�U�U�1�1�T�"�(�SU�S[�C\�C\�=]�=]�=]�=]�����s�H(�(AJ�-L�AM"c��	�%�&�'�(�)�*�+�,�-�.�/�0�1�2�3�4�5�|j�,�,r|j�/n|j�/|j}|j�+|j}t
|��x}|_tttt|������x|_}|j}|j
}|j}t|dd��}t|dd��}	|	dkr�,rdpd}	|	dk}	|j�1|j�)t%�)fd�t'|��D����}
||
z
}�1dkrI|j}t
|��|
z
}
|
|z}|
d	z
|z}|
d	kr|}|}ndx}}|
|zdgz�&�&d
d
��'n2�1dvrd	}
||z}|d	z
|z}|}|}n|}
|dgz�&�&d
d
��'|}dx}x}}||z|zx|_�-|j�2�2r3t/�2t0��sd�2ndd	d
�2vzzdd�2vzzdd�2vzz�2nd�2t3�+d��d	��}||z
}�2dkr|�-zx|_x}x}}n��2dkrdx}x}}|j�%n��2d	krd}||z
||zzx}}nq�2dkrd}||z
||zzx}}n[�2dkrdx}}|r||z
|z
|znd}nA�2dkrd}||z
||zzx}}n+�2dkrdx}}||z
|z
|z}n�2dkrd	x}}||z
|z
|z}||_||_||_|j}|j�3|j |j!}}|dcxkr|krnn�3d���*n#d|kr�3|���*n|dkr�3|���*�*|_"||z�4d|z|z}||z||zz}|r6|	r||dzz|z}||z
}n|||zz||zz|dzz|z}||j#_$g|_%|j%j&}|j'}�%�&�'�(�*�+�,�-�.�/�0�1�2�3�4�5fd�}�1dkr�d} tQ|��D]y\}!�0g�(|r|
d	z
|!z
n|!�5|�5|zz�5�)�)|!dd���.�.r| d	z
} ||d	z
|zdzz�5n�5| |zz�5t'|��D]}"||"|"���|�(���zd
Sd} tQ|j��D]�\}#}$t
|$��d	krdnd�1|$D]�}!|r|
d	z
|#z
n|#�5|�5|zz�5g�(||!�0�)�)|!dd���.�.r| d	z
} ||
d	z
|zdzz�5n�5| |zz�5t'|��D]}"||"|"|
z|#z���|�(������d
S)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�`�K�|](}t��|dd����V��)dS)r9FN)rr�)r��_rNs  �r?r�z,BarChart.calcBarPositions.<locals>.<genexpr>os;�����[�[�1��T�^�^�A�h�u�=�=�>�>�[�[�[�[�[�[rAr�r.Nr�r�r�r�rwr�r���?r�r�r�r;g@c����dkr��|��z�z�z}n�
|��\}}|�z}�|}|�d}�}n��dvrl�sj|dkr2��	|��}|�kr�}�	|xx|z
cc<�	|}n4��
|��}|�kr�}�
|xx|z
cc<�
|}n�}�|��|z
}d|cxkrdkr
nn
d}|dkrd}���r|||�fp||�|f��dS)Nr�r�r��:�0�yE��:�0�yE>)r�)�colNo�accxrmrwr�datumrprn�_cscale�accumNeg�accumPos�barRow�baseLine�cScale�flipXY�
groupWidthr9r��rowrsrJ�vScalero�xVals        ����������������r?�_addBarz*BarChart.calcBarPositions.<locals>._addBar�sy����A�~�~��w�w�u�~�~�-��4�s�:����������A���H����J�E��}������� :�:�:�6�:��e�|�|�"�F�8�D�>�2�2���X�:�:�8�q� �����%�/���� (�����"�F�8�D�>�2�2���X�:�:�8�q� �����%�/���� (����� �A�������*����%�%�%�%��%�%�%�%�%�!�F��U�{�{�U�F��M�M�&�7�a��&��%7�M�A�a��f�;M�N�N�N�N�NrAr9Fr�r)*r�rnrmrPr�rQrh�_seriesCountr�r�r��
_rowLengthrLrMrKrirsrN�sumr�r��_groupWidthrJr�strr�_normFactor�_scale�_normFactorB�_normFactorG�_normFactorSrOr�r��	_baseLine�labels�labelPosFrac�
_barPositionsr�rVr�r�)6r>rrQ�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�sgrrrr rNr!r"r#r$r9r�r%rsrJr&ror's6                                     @@@@@@@@@@@@@@@@@r?r�zBarChart.calcBarPositionsSs�����������������������	��&�C�C��&�C�
�
������y��*-�d�)�)�3��d�'�&)�$�s�3�t�}�}�*=�*=�&>�&>�>���)�
�
���_�
��=���t�2�1�5�5���t�3�F�;�;����<�<�� 1�6� <�W���W�}������y���[�[�[�[��k�HZ�HZ�[�[�[�\�\�	�&��2���'�>�>��"�B��r�7�7�Y�.�L��h�&�B��q�.�*�,�B��A�~�~� ��"��� !�!���#�I�-�q�c�1�H�����{�H�H�
�0�
0�
0��L�!�(�*�B�"�1�$�j�0�B��E��E�E�+�L� �!��}�H�����{�H��B�!"�"�B�"���(*�2��b��0���:��&���	��k�#�.�.�
g�����!�S�K�%7�"8�8��C�;�<N�9O�O�PQ�SV�Ze�Se�Pf�f����K��F�F�1�I�I�a�L�!�!��
�4�Z����>�>�.0��m�;�D��;�r�;�B���
�!�^�^���B���b��i�G�G�
�!�^�^��B��"�u�r�"�u�o�%�B���
�!�^�^��B��"�u�r�"�u�o�%�B���
�!�^�^��M�B��"$�+�"�R�%��(�B���!�B�B�
�!�^�^��B��"�u�r�"�u�o�%�B���
�!�^�^��M�B���R�%��(�B��B�B�
�!�^�^��K�B���R�%��(�B��B�����������^�������r�|�B��
��=�=�=�=�b�=�=�=�=�=��v�a�y�y�H�H�
��V�V��v�b�z�z�H�H�
�!�V�V��v�b�z�z�H�!��������2�v�b�y���R�x��b�� ���	*��
7��T�#�X�
�s�*��������R��U�
�2�b�5�(��c��1�3�6��%)�B�I�"����� �'���0��	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�@�'�>�>��H�'��o�o�
�
�
��s���3C�N�|�a�'�%�/�/����d�4�i�'������x��?�?���*���M�H��!1�!�!3�T� 9�#� =�=�D�D��H�T�M�)�D�"�9�-�-�)�)�E��G�E�%�(�(�(�(���F�����
�
��H�"�4�#4�5�5�
 �
 ���2�&)�"�g�g�q�j�j�
�
�i���
 �
 �E�4D�L�<�!�+�b�0�0�"�D��$�t�)�+�D��F��u�+�C�!�^�^�E�8�U�C�C�F��.� �A�
��#�\�!�^�T�$9�#�$=�=������
�-��!&�y�!1�!1�?�?�����e�L�&8�2�&=�>�>�>�>��C��K�K�K�K�
 �
 �
 rAc��|j}t|ttf��r,||}t|ttf��r||}|�d}n�|dkr|j||}ngt|��r||j||z}nAt|d��r||j||��}nd|z}t|���|S)zreturn formatted label textN�values�__call__z6Unknown formatter type %s, expected string or function)	rSrr�r�rUrrQrj�	Exception)r>rlr�labelFmt�	labelText�msgs      r?�
_getLabelTextzBarChart._getLabelTexts����&���h��U�|�,�,�	+����H��(�D��<�0�0�
+�#�E�?�����I�I�
��
!�
!��*�5�1�%�8�I�I�
�8�_�_�	!� �4�9�U�#3�E�#:�:�I�I�
�X�j�
)�
)�	!� ����5�!1�%�!8�9�9�I�I�J�X�U�C��C�.�.� ��rAc�@�|j}t|dd��}|dk}|r|}|x}	}
|rd}
|d|zz}|dkrdpd|z}|dkr	||dzz}nD|d	kr|
dkr	||
z|z}n/||z
}|	}	n&|d
kr|
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��btr\�pm�valuerr�s
             r?�_labelXYzBarChart._labelXY%s�����
�U�;�x�
0�
0���6�z����%������U�����
��E�	�M������q�&�B��-��
�u�9�9��&��*��A�A�
��X�X��a�x�x���I��%�����I���S���
��X�X��a�x�x���I��%�����I���S����E�	�E�!�A���
���2�v�
rAc��|�||��}|r,|�||j||f|||||||�	�	dSdSr�)rX�	_addLabelrR)	r>rwrlrrmrnrorp�texts	         r?�_addBarLabelzBarChart._addBarLabelBsc���!�!�%��.�.���	g��N�N�4������!?��E�5�RS�UV�X]�_e�f�f�f�f�f�	g�	grAFc
���|	�|j}	|	r[|	jrVtj|	��}	|jjdkrdpd}
|�|
}|�|
}|�|	j|	||||||||��
�
SdSdS)Nrrr)�calcOnly)rWrg�copyrOr�rf)r>rwrlrrmrnrorprj�nar�s           r?�_addNABarLabelzBarChart._addNABarLabelGs���
�:�D�L�r�
�	h�"�'�	h���2���B���(�!�+�5��=��A��}�a�e��~��v��>�>�"�'�2�q�%���1�e�V�^f�>�g�g�g�	h�	h�	h�	hrAc��|j�r�t||j|j��}|j}|r|�||||	|��\}
}}n|�|||||	��\}}
}t
|dd��}|�"|�||��}||
}}|r|}n|}
n|r|}||	dzz}n
||dzz}|
}t
|dd��}|�|�||��}|r|}n|}|dkr|r
d|jz}d}nd|j	z}d}ndx}}|
r
||z|
|zfS|�
||z|
|z��|�|��|j|j
}}|r+|r)|�dt||||
||�����|�|��t
|dd��}|r$||||||||	||||
f|_||��|`dSdSdS)N�fixedEndrf�
fixedStartr���)r1r3rT)�visibler�fontName�fontSizer�rdri�	_getValue�dx�dy�	setOrigin�setText�lineStrokeColor�lineStrokeWidth�insertrrk�_callOutInfo)r>rgr`rwrlrrmrnrorprj�
labelWidthr#�y0�x0rbror��x00�y00rprvrw�sC�sW�alxs                          r?rfzBarChart._addLabelPsk���=�1	'�$�T�5�>�5�>�J�J�J��\�F��
C�!�]�]�5��1�V�E�B�B�
��B���!�]�]�5��1�U�6�B�B�
��B���u�Z��6�6�H��#��&�&�t�B�/�/���r�S�����B�B��B�B����C��F�3�J�,�C�C��E�#�I�+�C��C� ��|�T�:�:�J��%��(�(��b�1�1�����C�C��C��!�t�t����E�H��B��B�B��E�H��B��B�B����R��,��2��r�"�u��,��O�O�B�r�E�2�b�5�)�)�)��M�M�$�����*�E�,A��B��Y�b�Y�!�(�(�1�T�#�c�"�R�R�UW�%X�%X�%X�Y�Y�Y�
�E�E�%�L�L�L��$�0��6�6�C��
'�&*�1�U�5��1�U�6�#�c�RT�UW�%X��"���E�
�
�
��&�&�&�c1	'�1	'�\
'�
'rAc���t||||��}|j|_|j|_|j|_|jr|j|_|�|��dSr�)rr3r2r1r4rk)	r>rwrmrnrorprlrs�rs	         r?�_makeBarzBarChart._makeBar�s[����A�u�f�%�%���)��
��o����)��
�� �	6� %� 5�A��	���a�����rAc
�6	�|j}t|dd��}|j}|j}|j}i}|rSg}	t|j��dz
}
t|��D]*\}}t|��D]\}
\}}}}d||fvrd||
<��+gj}gj}t|��D�]�\}}t|��}||z}||}|�	|dd��}gj}t|��D�]\}
\}}}}||
f|vr
|||
fp|}d||fvr�|r|
|vr|�
|||
||||��n�|r�|
|	vr�|�
|||
||||d|�	�	}|ru||
|
\}}}}|�
||
|
||||d|�	�	}|d|dzdz}|d|dzdz}|�
||
|
||dd|�	��|	�|
��|r|d����d}t|d
��rtj
|j��}n!t|jd
��r|jj}t|dd��}|rg|r3|dkrt|j|��}nHt#|j|��}n2|dkrt|j|��}nt#|j|��}|ro|s||z}||dzz}n
||z}||dzz}||��||��|r9t%t'||
��|||jp|j��} | r|| ��n�|r2||_||_||_||_|�|��n�t7|��d
kr~t7|��d
krk|j�|j�]|�|||||||��|r@||jd|�||
��|j||
||
���|�|||
||||����tA|j!��D]6}|r2|tE||jp|j|j#|j$������7���|j!D]}!|�|!���|j!D]} |�| ���dS)Nr^r.r9FTrrfg-C��6?)rlr5r8r;gH�����z>r�)r`rcrlrrg)%rNrir6r�r`rhrQr�r�r�rmrjrk�deepcopyr5�minr8r�rrr1r2rmrnrorprk�absr�r	rXrhr�__self__rr3r4)"r>rw�lgrN�br�BPr#�catNAL�catNNA�CBL�rowNoLrlr%rrmrnrorpr��lineSyms�
styleCountrr�rowStyler9�linePtsrs�r0�r1r5r8�yL�xL�sym�pls"                                  r?�	_makeBarszBarChart._makeBars�s����y��
�T�+�d�
+�
+��
�
������%�����	*��C����^�^�a�'�F�'��m�m�
*�
*�
��s�4=�c�N�N�*�*�0�E�0�A�q�%���E�&�>�1�1�()��u�
��*��	���9��#�B�-�-�K	I�K	I�J�E�3��T���J��z�)�H��H�~�H��^�^�E�8�U�;�;�F��i�G�-6�s�^�^�>
C�>
C�)��)��!�E�&�!�%�(�D�0�K�T�8�E�:J�5K�W�x���E�&�>�)�)�!�
*�U�f�_�_��+�+�B�u�U�1�Q�u�V�L�L�L�L��*�E��$4�$4�!�0�0��E�%��!�E�&�QU�V\�]�]���]�24�V�*�U�2C�/�A�q�%��!%�!4�!4�R��u�Q�q��v�VZ�[a�!b�!b�B�!#�A��r�!�u��c� 1�A�!#�A��r�!�u��c� 1�A� �/�/��6�%��!�F�6�U[�/�\�\�\��
�
�5�)�)�)��,�w�w�t�}�}�}�����5�(�+�+�.�!�]�5�<�8�8�F�F��T�Y��1�1�.�!�Y�-�F� ��z�$�7�7���
@��	@� ��7�7�$'�����$>�$>�E�E�$'���u�$=�$=�E�E�!�!�8�8�%(�%�.���%@�%@�F�F�%(����%?�%?�F��J�!�,���Z����s��]�����Y������^���G�B�K�K�K��G�B�K�K�K��.�,�Z��u�-E�-E�b��E�L]�Lp�af�ap�q�q���-����
�
�
���	J� �F�H� �F�H�#(�F�L�$*�F�M��E�E�&�M�M�M�M���Z�Z��_�_��V���d�):�):���@[�_d�_p�_|��M�M�!�A�a��f�U�5�A�A�A��J�2�2�a�j��n�4�3E�3E�e�E�3R�3R�Y]�Yb�ch�Yi�jo�Yp�w|�DI�J�J�J�J��!�!�"�U�5��1�U�6�B�B�B�B�*�7�+;�<�<�
I�
I���I��E�(�7�(0�(<�(R��@R�(0�(<�.6�.F�H�H�H�I�I�I��
I��.�	�	�B�
�E�E�"�I�I�I�I��$�	�	�C�
�E�E�#�J�J�J�J�	�	rAc	��|j�rHt||j|j��}	|j}
|
r|�|||||��\}}}
n|�|||||��\}}}
t
|dd��}|�"|�||
��}||}}|
r|}n|}n|
r|}||dzz}n
||dzz}|}t
|dd��}|�|�||
��}|
r|}n|}|
dkr|
r
d|jz}d}nd|j	z}d}ndx}}|�
||z||z��|�|��|
|���fSdS)Nrorfrprrq)
rrrrsrtr�rdrirurvrwrxry�	getBounds)r>rgr`rlrrmrnrorpr~r#rr�rbror�r�r�rprvrws                     r?�_computeLabelPositionzBarChart._computeLabelPosition�s����=�)	(�$�T�5�>�5�>�J�J�J��\�F��
C�!�]�]�5��1�V�E�B�B�
��B���!�]�]�5��1�U�6�B�B�
��B���u�Z��6�6�H��#��&�&�t�B�/�/���r�S�����B�B��B�B����C��F�3�J�,�C�C��E�#�I�+�C��C� ��|�T�:�:�J��%��(�(��b�1�1�����C�C��C��!�t�t����E�H��B��B�B��E�H��B��B�B����R��O�O�B�r�E�2�b�5�)�)�)��M�M�$�����e�o�o�'�'�'�'�S)	(�)	(rAc��|j|j}}|r||_|r||_|jr@|�|�|j|j��|j|j	��n?|�|j|�|j|j	��|j��|�
|j��|���dS)zRInformation function, can be called by charts which want to with space around barsN)
rPrO�joinAxisr�r�r�rmrornrpr�r�r��r>rr�s   r?�_computeBarPositionszBarChart._computeBarPositionss����"�D�N�B��
��R�r�{�
��R�r�{��<�	T��N�N�4�?�?�4�6�$�*�=�=�t�v�t�{�S�S�S�S��N�N�4�6�4�?�?�4�6�$�+�#F�#F��
�S�S�S�
���T�(�)�)�)��������rAc�r�|j}|���t|j��}|j}g}|j}|r�|j}||jz}	|j|j	z}
|D]c}|D]^\}}
}}||z}|
|z}|t|
|��t|
|��t||��|z
|	t||��z
f���_�dn�|j}||j	z}	|j|jz}
|D]c}|D]^\}}
}}|
|z}||z}|t||��t||��t|
|��|z
|	t|
|��z
f���_�d|���|dg}|D]�}|d}|d|dkr�|d|dkrrt|d|d��t|d|d��t|d|d��t|d|d��f|d<��|�|����|}d}d}t|��}t|��D]�\}}|d}||z}||
krn�|}dx}}||krg||d|krUt||d|��}t||d|��}|dz
}||kr||d|k�U||kr-||kr&|}|r
||||z||zdfp||||z||zdf}||krn.��||kr&|}|r
|	|z
||	||zdfp||	|z
||z|	df}||krn��||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�rhrQr6r�rmrornrpr�r�rr�)r>�size�requiredr#�lenDatar��C�aCrdr^�end�bprmrn�w�hr�rr�r�r��maxS�maxP�nCrz�ci�v0�v1r��alo�ahis                               r?�_computeMaxSpacezBarChart._computeMaxSpace*s�������!�!�#�#�#��d�i�.�.��
�
����
�X���	K���B��d�j��B��&���$�C��
J�
J��"$�J�J�J�A�q�!�Q��!��A��!��A��B��A�a����Q�q���3�q��8�8�b�=�"�s�1�Q�x�x�-�H�I�I�I�I�J�
J���B��d�k�!�B��&���#�C��
K�
K��"$�K�K�J�A�q�!�Q��!��A��!��A��B��A�a���#�a��(�(�C��!�H�H�r�M�2��A�a���=�I�J�J�J�J�K�	
������
�q�T�F���	�	�A��"��A���t�A�a�D�y�y�Q�q�T�!�A�$�Y�Y��Q�q�T�!�A�$����A�a�D��1����s�1�Q�4��!��~�~�c�!�A�$�q�QR�t�n�n�U��"�����������
������
��V�V���a�L�L�	+�	+�D�A�b��A��B��D��B��#�v�v�u�u��A�"�"�C�#��B�$�$�1�Q�4��7�B�;�;��!�A�$�q�'�#�&�&���!�A�$�q�'�#�&�&���Q����B�$�$�1�Q�4��7�B�;�;��3�w�w��t�8�8��D�!�>�r�"�R��V�B�t�G�A�&>�Z�2�b��D��QS�TW�QW�XY�BZ�D��x�'�'�����T������:�2�c�6�"�R��4���":�V�r�"�S�&��D��QS�TU�>V���8�#�#�U�U���T�z�rAc��|j|j}}|r||_|r||_|jr@|�|�|j|j��|j|j	��n?|�|j|�|j|j	��|j��|�
|j��|���|j
}gj}|j}t!|��D�]
\}}gj}t!|��D]�\}	\}
}}}
d||
fvrw|j}|rb|jr[t'j|��}|jjdkrdpd}|�|}|
�|}
||�|j|||	|
|||
�����{|d����|�||	��}|r3||�||j||	f||	|
|||
������|d����||j����|jS)zLInformation function, can be called by charts which want to mess with labelsNrrr)rPrOr�r�r�r�rmrornrpr�r�r�rNr�r6r�rWrgrkr�r�rXrRr�)r>rr�rNr�r�rlr%r�rrmrnrorprlr�rgs                 r?�_computeSimpleBarLabelPositionsz(BarChart._computeSimpleBarLabelPositionsjs7���"�D�N�B��
��R�r�{�
��R�r�{��<�	T��N�N�4�?�?�4�6�$�*�=�=�t�v�t�{�S�S�S�S��N�N�4�6�4�?�?�4�6�$�+�#F�#F��
�S�S�S�
���T�(�)�)�)��������y���I��
�
��#�B�-�-�	�	�J�E�3��	�A�09�#���
 �
 �,��,��1�e�V��E�&�>�)�)���B�� �b�g� �!�Y�r�]�]�� �N�4�a�7�A�E�I�T�� �=�!�%�!�>�A�6���$�4�4�R�W�b�%��PQ�ST�V[�]c�d�d�e�e�e�e���$������-�-�e�E�:�:�D�� ���$�4�4�T�4�>�5�RW�.�;Y�[`�bg�ij�lm�ot�v|�}�}�~�~�~�~���$�����
�A�a�j�M�M�M�M��z�rAc��t��}t��}|�||��|�|��|Sr�)rr�rk)r>rwr�s   r?r�zBarChart.makeBars�s<���G�G��
�W�W�����q�����	���b�	�	�	��rAc�
�|jj}|j}t|��}t	tt
t|������}|dkr|dz
|jz||jzz}n|j}||j	|zzS)z:for dynamically computing the desired category axis lengthr�r.)
rPrsrQrhr�r�r�rMrKrL)r>rsrQr��mr$s      r?�_desiredCategoryAxisLengthz#BarChart._desiredCategoryAxisLength�s~���!�'���y����I�I����S��T�]�]�#�#�$�$���*����A�#�t��.�q����>�J�J���J��$�#�J�.�/�/rAc�v�|j|j}}|r||_|r||_|jr@|�|�|j|j��|j|j	��n?|�|j|�|j|j	��|j��|�
��Sr�)rPrOr�r�r�r�rmrornrprr�s   r?�drawz
BarChart.draw�s����"�D�N�B��
��R�r�{�
��R�r�{��<�	T��N�N�4�?�?�4�6�$�*�=�=�t�v�t�{�S�S�S�S��N�N�4�6�4�?�?�4�6�$�+�#F�#F��
�S�S�S����!�!�!rArFr�)FN)F))rBrCrD�__doc__rr&rrr
rrr%rrr	rrErxr|r@r�r�r�r�r�rr�rXrdrhrmrfr�r�r�r�r�r�r�r�r�rFrAr?rHrH4s������.�.��w�
�
�
�H�H�
�"�l�8�8�Y�x�x��(�@S�7T�7T�,U�#V�#V�^S�bc�d�d�d�d�
��<��/P�Q�Q�Q�Q�
�$�|�H�3R�S�S�S�S�
�"�\�(�1Q�R�R�R�R�	
�
�|�D�'G�H�H�H�H�
�!�L��,G�H�H�H�H�

�$�|�D�/M�N�N�N�N�
��|�D�'X�Y�Y�Y�Y�
�!�L��,O�P�P�P�P�
�&��d�2N�O�O�O�O�
�'�,�t�3V�ef�g�g�g�g�
�%��T�0y�z�z�z�z�
�(�<�	�8f�uv�w�w�w�w�
��,�7�>\�kl�m�m�m�m�
�#�l�4�.l�m�m�m�m�
�  ,�|�H�;z�{�{�{�{�!
�"!-��U�U�7�6�&�-I�-I�P~� � � � �#
�$!�L��,x�IJ�K�K�K�K�%
�&'�,�~�=�����'
�8'�,�'?�Fo�~�A�A�A�A�9
�:#�l�:�:�j�j��q�PQ�UV�.W�.W�.W�`a�ij�no�#p�#p�#p�rW�X�X�X�;
�H�@!M�!M�!M�F=�=�=�=�;$�;$�;$�z������4#�#�#�8B�B�B�	`�	`�	`�F�F�F�P| �| �| �|���(���:g�g�g�
h�h�h�h�2'�2'�2'�2'�h���c�c�c�J*(�*(�*(�X
 �
 �
 �>�>�>�@#�#�#�J���
0�
0�
0�"�"�"�"�"rArHc��eZdZdZdZdS)�VerticalBarChartz3Vertical bar chart with multiple side-by-side bars.rN�rBrCrDr�r�rFrAr?r�r��s������9�9��G�G�GrAr�c��eZdZdZdZdS)�HorizontalBarChartz5Horizontal bar chart with multiple side-by-side bars.r.Nr�rFrAr?r�r��s������;�;��G�G�GrAr�c�(�eZdZdd�Zd�Zd�Zd�ZdS)�
_FakeGroupNc�F�g|_tj|��|_dSr�)r��	functools�
cmp_to_key�_key)r>r)s  r?r@z_FakeGroup.__init__�s����
��(��-�-��	�	�	rAc�:�|j�|��dSr�)r�r�)r>�whats  r?rkz_FakeGroup.add�s���
���$�����rAc��|jSr�)r�r=s r?rcz_FakeGroup.value�s
���z�rAc�F�|j�|j���dS)N)�key)r�rr�r=s r?rz_FakeGroup.sort�s ���
���D�I��&�&�&�&�&rAr�)rBrCrDr@rkrcrrFrAr?r�r��sU������.�.�.�.� � � ����'�'�'�'�'rAr�c
��eZdZeeeed���eed���eed���eed������ZdZdZ	dZ
dZd	�Zd
�Z
d�Zd�Zd
�ZdS)r~zdx/dzr,zdy/dzzdepth of an individual serieszz gap around series)rI�theta_x�theta_y�zDepth�zSpacer;Nc�&�t�|��|j}|j}|�|j}|j}|�|j}|jjdkr||z|dz|zz}n|d|zz}||j	z}|j
|z|_|j|z|_
dS)Nr�r.r�)rHr�r)r�rKr�rMrPrsr.r��_3d_dxr��_3d_dy)r>r7r�r��	_3d_depths     r?r�zBarChart3D.calcBarPositions�s����!�!�$�'�'�'��'������>�D�M�6�����>�D�O�6���"�M�1�1�#�F�*�K��M�6�+A�A�I�I���6��)�I��T�%�%�	��l�9�,����l�9�,����rAc��|j}|�|j}|j}|�|j}|jjdkr|j|||zz|zz}n
|j|z}|S)Nr�)r�rKr�rMrPrsr.)r>rlr�r��z0s     r?�_calc_z0zBarChart3D._calc_z0�sf������>�D�M�6�����>�D�O�6���"�M�1�1��!�5�&��-�#8��#?�@�B�B��!�&�(�B��	rAc�:�|j}|�|j}|j}	|	�|j}	|�|��}
|
||jzz}|dkr||z
}|}||
|jzz
}||
|jzz
}|jr||	z
}n||	z
}|�	d|
|||||||f	��dS)Nr)
r�rKr�rMr�r.r�r�r�rk)r>rwrmrnrorprlrsr�r�r��z1s            r?r�zBarChart3D._makeBar�s�������>�D�M�6�����>�D�O�6�
�]�]�5�
!�
!��
�&��)�)�
)����7�7�
��J�A��F�E�	�R���_���	�R���_����<�	�
��K�A�A�
��K�A�	���q��B�q��5���e�4�5�5�5�5�5rAc���|�|��}|j}	|	�|j}	|}
|||jzz
}|||jzz
}|jr||	z
}n||	z
}|�d||
||||||f	��dS)Nr.)r�r�rMr�r�r�rk)r>rwrlrrmrnrorpr�r�r�s           r?rhzBarChart3D._addBarLabel�s���
�]�]�5�
!�
!������>�D�O�6�
��	�R���_���	�R���_����<�	�
��K�A�A�
��K�A�	���q��B�q��5���e�4�5�5�5�5�5rAc���ddlm}t|j���}|�||��|���t
��}|j}|j}|�	��}|j
j}|dkr|���}n)|dkr#d�td�|D����D��}|D]X}|ddkrJ|dd�\}	}
}}}
}}}|
|	z
}|||||
z|||z||z||z|jd|j|jd	�
���Y|D]<}|dkr4|dd�\}	}
}}}
}}}t"�|||||||
|���=|S)Nr)�_draw_3d_barr(rr�c��g|]
}|d��S)r.rF)r�rs  r?r�z'BarChart3D.makeBars.<locals>.<listcomp>s��\�\�\���!��\�\�\rAc3�VK�|]$}|d|d|d|df|fV��%dS)r.r�r�r�NrF)r��ts  r?r�z&BarChart3D.makeBars.<locals>.<genexpr>s@����-Z�-Z�A��!��Q�q�T�!�A�$�q��t�/D�Q�.G�-Z�-Z�-Z�-Z�-Z�-ZrAr.g�������?)r2�fillColorShadedr1r3�shading)�!reportlab.graphics.charts.utils3dr�r��_cmpZr�rrr�r�rcrPrs�reverser�r2r1r3rHrh)r>r��fgrwr�r��fg_valuer�r�r�r�rmrnrorprlrs�dzrs                   r?r�zBarChart3D.makeBarss���B�B�B�B�B�B�
�D�J�
'�
'�
'�����r�"����
���	�	�	��G�G���,���,���8�8�:�:���#�)���I����%�%�'�'�H�H�
�g�
�
�\�\�f�-Z�-Z�QY�-Z�-Z�-Z�&[�&[�\�\�\�H��	*�	*�A���t�Q�w�w�56�q�r�r�U�2��2�a��%��u�U��"�W����Q��1�U�7�A�q��x��G��R��Z�&+�o�t�(-�(9�u�GX�$(�*�*�*�*���	K�	K�A��!�t�t�56�q�r�r�U�2��2�a��%��u�U��%�%�d�1�U�5��1�U�6�J�J�J���rA)rBrCrDrrHrrrEr�r�r�r�r�r�r�rhr�rFrAr?r~r~�s��������w�H��,�x�g�6�6�6��,�x�g�6�6�6���h�-L�M�M�M���h�-B�C�C�C�	
�
�
�H��G��G�
�F�
�F�
-�
-�
-�	�	�	�6�6�6�$6�6�6�����rAr~c��eZdZd�ZdS)�VerticalBarChart3Dc��t|d|d|d|df|d|d|d|df��S)Nr.r�rr�r(�r>rr�s   r?�<lambda>zVerticalBarChart3D.<lambda>%sJ��#��!��u�Q�q�T�!�A�$��!��u�5��!��u�Q�q�T�!�A�$��!��u�6M�N�N�rAN�rBrCrDr�rFrAr?r�r�$s������
N�
N�E�E�ErAr�c��eZdZd�ZdS)�HorizontalBarChart3Dc��t|d|d|d|df|d|d|d|df��S)Nr.r�rr�r(r�s   r?r�zHorizontalBarChart3D.<lambda>(sJ��S�1�Q�4�%��!��Q�q�T�1�Q�4�%�!8�1�Q�4�%��!��Q�q�T�1�Q�4�%�9P�Q�Q�rANr�rFrAr?r�r�'s������Q�Q�E�E�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_|�|��|S)z9A slightly pathologic bar chart with only TWO data items.�r���
��2�}�,r�<��ne�rq��Ying�Yang�rr�rmrnrprorQrr�r1rO�valueMin�valueMax�	valueSteprPr4r�rvrw�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���B�L���B�L��'+�B�O��$� !�B�O��� "�B�O���#%�B�O�� �%+�V�$4�B�O�!��K�K��O�O�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_|�|��|S)z/A pathologic bar chart with only ONE data item.r�r���*r�r�r�rrrrrqr�Jan-99rr
s   r?�	sampleV0brJs����c�3���G��7�D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'+�B�O��$� !�B�O��� "�B�O���#%�B�O�� �%-�J�B�O�!��K�K��O�O�O��NrAc��tdd��}dg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d|j
_d	|j
_
d
|jj_d|jj_d|jj_g|j_|�|��|S)
z8A really pathologic bar chart with NO data items at all!r�r�rFr�r�r�rrrrrrq)rr�rmrnrprorQrr�r1rOrr	r
rPr4r�rvrwrrkr
s   r?�	sampleV0crhs����c�3���G��4�D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'+�B�O��$� !�B�O��� "�B�O���$&�B�O�!��K�K��O�O�O��NrAc��tdd��}ddg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d	|j
_d
|j
_
d|jj_d|jj_d
|jj_d|jj_d�d��}d�|D��}||j_|�|��|S)�!Sample of multi-series bar chart.r�r��r�r�r���%�-�r���r����&�.r�r�r�r�r�rrrrrrqr�Jan Feb Mar Apr May Jun Jul Aug� c��g|]}|dz��S�z-99rF�r�r�s  r?r�zsampleV1.<locals>.<listcomp>����*�*�*�A��%��*�*�*rA)rr�rmrnrprorQrr�r1rOrr	r
rPr4r�rvrwrrrrk�r�rQr��catNamess    r?�sampleV1r+�s����c�3���G�
+�*��D�

�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'+�B�O��$� !�B�O��� "�B�O���#%�B�O�� �0�6�6�s�;�;�H�*�*��*�*�*�H�$,�B�O�!��K�K��O�O�O��NrAc�6�ddg}d}tdd��}t��}d|_d|_d|_d|_||_d	|_d
|_d
|_	d|j
_d|j
_d
|j
_
d|j
j_d|j
j_d|j
j_d|j
j_||j_d|jj_d|jj_d|jj_|�|��|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���rr��	Helveticarr�r������rr�rmrnrprorQrMrLrKrOrr	r
r4rsrtr�r�rPrrwrk�rQr4r�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���B�L���B�L��#.�B�L�� �#$�B�L�� �$'�B�L��!�%-�B�L��"�$*�B�O�!�&1�B�O��#�&'�B�O��#� #�B�O����K�K��O�O�O��NrAc�6�ddg}d}tdd��}t��}d|_d|_d|_d|_||_d	|_d
|_d
|_	d|j
_d|j
_d	|j
_
d
|j
j_d|j
j_d|j
j_d|j
j_||j_d
|jj_d|jj_d|jj_|�|��|S)rr-r0r4r�r�r�r�r�r�r�r5rr6rr�r�r7r8r9s    r?�	sampleV2br=�r;rAc���ddg}d}tdd��}t��}d|_d|_d|_d|_||_d	|_d
|_d
|_	d|j
_d|j
_d
|j
_
d|j
j_d|j
j_||j_d|jj_d|jj_d|j
j_d|j
j_d|jj_d
|j_d|_d|j_d|j_d|j_d|j_d|j_|�|��|S)r�r.r/r�r��{�G�#@�r1r2r3r�r@r4r�r�r�r�r�r�r�r5rr�r6rr�r�r7�%0.2frr�)rr�rmrnrprorQrMrLrKrOrr	r
r4rsrtrPrr�r�rwrRr�rSrvrkr9s    r?�	sampleV2crC�sE��
$�$��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���B�L���B�L��#.�B�L�� �#$�B�L�� �$*�B�O�!�&1�B�O��#�&'�B�O��#�$'�B�L��!�%-�B�L��"� #�B�O����B�L���B���B�L�O��B�L�O� �B�L��'�B�L���B�L���K�K��O�O�O��NrAc�2�d}d}d}t|��t|��ks
Jd���t|��t|��ks
Jd���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|j_d|j_||j_d|jj_d|jj_d|jj_d|jj_d
|jj_d|jj_t?|��}|� dd��|�!d��|�"|��|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;rg�������?gffffff�?g�������?g�������?rrH�
g���Q��?g�������?皙�����?g)\��(�?g�p=
ף�?g)\��(�?g)\��(�?rKrJ�bad datar�r�rr��rBr�r�r6r�r�rqr�r.i�����i����)#rhrr�rmrnrprorQrr�rNr2rSrRrvrwr�rrsrtr�rOrrrr	r
rP�tickUp�tickDownrr4r�	translate�rotaterk��names�series1�series2r�r�rws      r?�sampleV3rW,s���
G�E�B�G�H�G��u�:�:��W���%�%�%�z�%�%�%��u�:�:��W���%�%�%�z�%�%�%��c�3���G�	�	�	�B��B�D��B�D��B�I��B�H��j�B�G���B�G���B���B�L�O��B�L�O� �B�L���B�L��'�B�L���B�L���B�L���B�L���B�L���B�L���B�L���B�O�� �B�O��$)�B�O�!�#%�B�O�� �'*�B�O��$� !�B�O��� $�B�O���&1�B�O��#�&'�B�O��#�
�b�	�	�A��K�K��S�����H�H�S�M�M�M��K�K��N�N�N��NrAc��tdd��}dg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d|j
_d	|j
_
d
|jj_d|jj_dd
g|j_|�|��|S)�AA bar chart showing value axis region starting at *exactly* zero.r�r�r�r�r�r�rrrr����rr�rr�rmrnrprorQrr�r1rOrr	r
rPr4r�rwrrkr
s   r?�	sampleV4ar\ds����c�3���G��:�D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'*�B�O��$� "�B�O���%+�V�$4�B�O�!��K�K��O�O�O��NrAc��tdd��}dg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d|j
_d	|j
_
d
|jj_d|jj_dd
g|j_|�|��|S)�<A bar chart showing value axis region starting *below* zero.r�r�r�r�r�r����rrr�rZrrr[r
s   r?�	sampleV4br`�s����c�3���G��:�D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'*�B�O��$� "�B�O���%+�V�$4�B�O�!��K�K��O�O�O��NrAc��tdd��}dg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d|j
_d	|j
_
d
|jj_d|jj_dd
g|j_|�|��|S)z;A bar chart showing value axis region staring *above* zero.r�r�r�r�r�r�r�rrr�rZrrr[r
s   r?�	sampleV4crb�s����c�3���G��:�D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'*�B�O��$� "�B�O���%+�V�$4�B�O�!��K�K��O�O�O��NrAc��tdd��}dg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d|j
_d	|j
_
d
|jj_d|jj_dd
g|j_|�|��|S)�<A bar chart showing value axis region entirely *below* zero.r�r��i�i��r�r�r����r_rr�rZrrr[r
s   r?�	sampleV4drg�s����c�3���G��<�D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'*�B�O��$� "�B�O���%+�V�$4�B�O�!��K�K��O�O�O��NrA))r�r)r�r�)r�()rhrc��tdd��}t}t��}d|_d|_d|_d|_||_tj	|_
d|j_d|j_
d|j_d	|jj_d
|jj_ddg|j_|�|��|S)
�8A simple bar chart with no expressed spacing attributes.r�r�r�r�r�rrrr�rZrr)r�dataSample5r�rmrnrprorQrr�r1rOrr	r
rPr4r�rwrrkr
s   r?�	sampleV5arl�s����c�3���G��D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'*�B�O��$� "�B�O���%+�V�$4�B�O�!��K�K��O�O�O��NrAc���tdd��}t}t��}d|_d|_d|_d|_||_tj	|_
d|_d|_d|_
d	|_d|j_d
|j_d|j_d|jj_d
|jj_ddg|j_|�|��|S)�-A simple bar chart with proportional spacing.r�r�r�r�r�rrhr�r�rrr�rZrr�rrkr�rmrnrprorQrr�r1rJrKrLrMrOrr	r
rPr4r�rwrrkr
s   r?�	sampleV5brp������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���B�L���B�L��'*�B�O��$� "�B�O���%+�V�$4�B�O�!��K�K��O�O�O��NrAc���tdd��}t}t��}d|_d|_d|_d|_||_tj	|_
d|_d|_d|_
d|_d|j_d	|j_d
|j_d|jj_d|jj_d
dg|j_|�|��|S)�6Make sampe simple bar chart but with absolute spacing.r�r�r�r�r�r.rhrrrr�rZrrror
s   r?�
sampleV5c1rts����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���B�L���B�L��'*�B�O��$� "�B�O���%+�V�$4�B�O�!��K�K��O�O�O��NrAc���tdd��}t}t��}d|_d|_d|_d|_||_tj	|_
d|_d|_d|_
d	|_d	|j_d
|j_d|j_d|jj_d
|jj_ddg|j_|�|��|S)rsr�r�r�r�r�r.rhr�rrrr�rZrrror
s   r?�
sampleV5c2rv<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���B�L���B�L��'*�B�O��$� "�B�O���%+�V�$4�B�O�!��K�K��O�O�O��NrAc���tdd��}t}t��}d|_d|_d|_d|_||_tj	|_
d|_d|_d|_
d	|_d|j_d
|j_d|j_d|jj_d
|jj_ddg|j_|�|��|S)rsr�r�r�r�r�r.rhrr�rrr�rZrrror
s   r?�
sampleV5c3rx]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���B�L���B�L��'*�B�O��$� "�B�O���%+�V�$4�B�O�!��K�K��O�O�O��NrAc���tdd��}t}t��}d|_d|_d|_d|_||_tj	|_
d|_d|_d|_
d	|_d
|j_d|j_d|j_d
|jj_d|jj_ddg|j_|�|��|S)rsr�r�r�r�r�r.rhr�r�rrrr�rZrrror
s   r?�
sampleV5c4rz~rqrAc��tdd��}dg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d|j
_d	|j
_
d
|jj_d|jj_dd
g|j_|�|��|S)z>Make a slightly pathologic bar chart with only TWO data items.r�r�r�r�r�r�rrr�serrr�rr�rmrnrprorQrr�r1rOrr	r
rPr4r�rrrkr
s   r?�	sampleH0ar~�s����c�3���G��:�D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'+�B�O��$�#%�B�O�� �%+�V�$4�B�O�!��K�K��O�O�O��NrAc��tdd��}dg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d|j
_d|j
_
d	|jj_d
|jj_dg|j_|�|��|S)z4Make a pathologic bar chart with only ONE data item.r�r�rr�r�r�rrr|rrr}r
s   r?�	sampleH0br��s����c�3���G��7�D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'+�B�O��$�#%�B�O�� �%-�J�B�O�!��K�K��O�O�O��NrAc�~�tdd��}dg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d|j
_d	|j
_
d
|jj_d|jj_g|j_|�|��|S)z=Make a really pathologic bar chart with NO data items at all!r�r�rFr�r�r�rrrr|rr}r
s   r?�	sampleH0cr��s����c�3���G��4�D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'+�B�O��$�#%�B�O�� �$&�B�O�!��K�K��O�O�O��NrAc��tdd��}ddg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d	|j
_d
|j
_
d|jj_d�d
��}d�|D��}||j_|�|d��|S)rr�r�rrr�r�r�rrr�er#r$c��g|]}|dz��Sr&rFr's  r?r�zsampleH1.<locals>.<listcomp>r(rA�barchart)rr�rmrnrprorQrr�r1rOrr	r
rPr4r�rrrkr)s    r?�sampleH1r��s����c�3���G�
+�*��D�

�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'*�B�O��$�0�6�6�s�;�;�H�*�*��*�*�*�H�$,�B�O�!��K�K��J�����NrAc�t�ddg}d}tdd��}t��}d|_d|_d|_d	|_||_d
|_d|_d|_	d|j
_d
|j
_d|j
_
d|j
j_d|j
j_d|j
j_d|j
j_|j
�|j��||j_d|jj_d|jj_d|jj_|�|��|S)rr-r0r4r�r�r�r�r�r�rr�r5rr�r6rr�r��j���)rr�rmrnrprorQrMrLrKrOrr	r
r4rsrtr�r�r�rPrrvrkr9s    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���B�L���B�L��#.�B�L�� �#$�B�L�� �$'�B�L��!�%-�B�L��"��L���2�7�#�#�#�$*�B�O�!�&1�B�O��#�&'�B�O��#� $�B�O����K�K��O�O�O��NrAc�6�ddg}d}tdd��}t��}d|_d|_d|_d	|_||_d
|_d|_d|_	d|j
_d
|j
_d
|j
_
d|j
j_d|j
j_d|j
j_d|j
j_||j_d|jj_d|jj_d|jj_|�|��|S)rr-r0r4r�r�r�r�r�r�r�r�r5rr6rr�r�r�)rr�rmrnrprorQrMrLrKrOrr	r
r4rsrtr�r�rPrrvrkr9s    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���B�L���B�L��#.�B�L�� �#$�B�L�� �$'�B�L��!�%-�B�L��"�$*�B�O�!�&1�B�O��#�&'�B�O��#� $�B�O����K�K��O�O�O��NrAc���ddg}d}tdd��}t��}d|_d|_d|_d	|_||_d
|_d|_d|_	d|j
_d
|j
_d|j
_
d|j
j_d|j
j_d|j
j_d|j
j_||j_d|jj_d|jj_d|jj_d|j_d|_d|j_d|j_d|j_d|j_d|j_|�|��|S)rr?rAr4r�r�r�r�r�r�r�r�r5rr�r6rr�r�r�rBrr�)rr�rmrnrprorQrMrLrKrOrr	r
r4rsrtr�r�rPrrvrRr�rSrwrkr9s    r?�	sampleH2cr�hsE��
$�$��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���B�L���B�L��#.�B�L�� �#$�B�L�� �$'�B�L��!�%-�B�L��"�$*�B�O�!�&1�B�O��#�&'�B�O��#� $�B�O����B�L���B���B�L�O��B�L�O� �B�L��'�B�L���B�L���K�K��O�O�O��NrAc��d}d}d}t|��t|��ks
Jd���t|��t|��ks
Jd���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|j_||j_d
|jj_d|jj_d|jj_d|jj_t=|��}|�|��|S)zEA really horizontal bar chart (compared to the equivalent faked one).rErGrIrLr�r�r�r�rM�rBrr�r6r�r�rqr�r.iV���) rhrr�rmrnrprorQrr�rNr2rSrRrvrwr�rsrtr�rOrrrr	r
rP�tickLeft�	tickRightrr4rrkrSs      r?�sampleH3r��s���
G�E�B�G�H�G��u�:�:��W���%�%�%�z�%�%�%��u�:�:��W���%�%�%�z�%�%�%��c�3���G�	�	�	�B��B�D�
�B�D��B�I��B�H��j�B�G���B�G���B���B�L�O��B�L�O� �B�L��'�B�L���B�L���B�L���B�L���B�L���B�L���B�L�� �B�O�� !�B�O��$)�B�O�!�'*�B�O��$� $�B�O���&1�B�O��#�&'�B�O��#�
�b�	�	�A��K�K��N�N�N��NrAc�`�tdd��}dg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d|j
_d	|j
_
d
|jj_ddg|j_|�|��|S)
rYr�r�r�r�r�r�rrrr�rr�rr�rmrnrprorQrr�r1rOrr	r
rPr4r�rrkr
s   r?�	sampleH4ar��s����c�3���G��:�D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'*�B�O��$�%+�V�$4�B�O�!��K�K��O�O�O��NrAc�`�tdd��}dg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d|j
_d	|j
_
d
|jj_ddg|j_|�|��|S)
r^r�r�r�r�r�r�r_rrr�rrr�r
s   r?�	sampleH4br��s����c�3���G��:�D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'*�B�O��$�%+�V�$4�B�O�!��K�K��O�O�O��NrAc�`�tdd��}dg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d|j
_d	|j
_
d
|jj_ddg|j_|�|��|S)
z<A bar chart showing value axis region starting *above* zero.r�r�r�r�r�r�r�rrr�rrr�r
s   r?�	sampleH4cr�s����c�3���G��:�D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'*�B�O��$�%+�V�$4�B�O�!��K�K��O�O�O��NrAc�`�tdd��}dg}t��}d|_d|_d|_d|_||_tj|_	d|j
_d|j
_d	|j
_
d
|jj_ddg|j_|�|��|S)
rdr�r�rer�r�r�rfr_rr�rrr�r
s   r?�	sampleH4dr� s����c�3���G��<�D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'*�B�O��$�%+�V�$4�B�O�!��K�K��O�O�O��NrAc�h�tdd��}t}t��}d|_d|_d|_d|_||_tj	|_
d|j_d|j_
d|j_d	|jj_d
dg|j_|�|��|S)rjr�r�r�r�r�rrrr�rr)rrkr�rmrnrprorQrr�r1rOrr	r
rPr4r�rrkr
s   r?�	sampleH5ar�>s����c�3���G��D�	�	�	�B�
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�L���B�L���B�L��'*�B�O��$�%+�V�$4�B�O�!��K�K��O�O�O��NrAc��tdd��}t}t��}d|_d|_d|_d|_||_tj	|_
d|_d|_d|_
d	|_d|j_d
|j_d|j_d|jj_d
dg|j_|�|��|S)rnr�r�r�r�r�rrhr�r�rrr�rr�rrkr�rmrnrprorQrr�r1rJrKrLrMrOrr	r
rPr4r�rrkr
s   r?�	sampleH5br�Y����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���B�L���B�L��'*�B�O��$�%+�V�$4�B�O�!��K�K��O�O�O��NrAc��tdd��}t}t��}d|_d|_d|_d|_||_tj	|_
d|_d|_d|_
d|_d|j_d	|j_d
|j_d|jj_dd
g|j_|�|��|S)z)A simple bar chart with absolute spacing.r�r�r�r�r�r.r�rrrr�rrr�r
s   r?�
sampleH5c1r�y����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���B�L���B�L��'*�B�O��$�%+�V�$4�B�O�!��K�K��O�O�O��NrAc��tdd��}t}t��}d|_d|_d|_d|_||_tj	|_
d|_d|_d|_
d	|_d	|j_d
|j_d|j_d|jj_d
dg|j_|�|��|S��'Simple bar chart with absolute spacing.r�r�r�r�r�r.r�r�rrrr�rrr�r
s   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���B�L���B�L��'*�B�O��$�%+�V�$4�B�O�!��K�K��O�O�O��NrAc��tdd��}t}t��}d|_d|_d|_d|_||_tj	|_
d|_d|_d	|_
d
|_d	|j_d|j_d|j_d
|jj_ddg|j_|�|��|S)r�r�r�r�r��r�r.r�rr�rrr�rrr�r
s   r?�
sampleH5c3r��r�rAc��tdd��}t}t��}d|_d|_d|_d|_||_tj	|_
d|_d|_d|_
d|_d	|j_d
|j_d|j_d|jj_d
dg|j_|�|��|Sr�r�r
s   r?�
sampleH5c4r��r�rAc�h�tdd��}t}t��}d|_d|_d|_d|_||_tj	|_
d|_d|_d|_
d	|j_d
|j_d|j_d|jj_dd
g|j_d	dlm}|��}tj	|_tj|_d|_d	|_|��}tj	|_tj|_d|_d	|_|��}tj|_tj|_d|_d|_d	|_||j _!||j d_!||j d_!|�"|��|S)�(Simple bar chart using symbol attribute.r�r�r�r�r�r�rr�rrr�rr��
ShadedRect�
horizontal�verticalr.r�)#rrkr�rmrnrprorQrr�r1rKrLrMrOrr	r
rPr4r�r� reportlab.graphics.widgets.gridsr��fillColorStartr<�fillColorEnd�orientationr3�pink�white�cylinderModerNr5rk)r�rQr�r��sym1�sym2�sym3s       r?�
sampleSymbol1r��s~���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���B�L���B�L��'*�B�O��$�%+�V�$4�B�O�!�;�;�;�;�;�;��:�<�<�D� �,�D����D��#�D���D���:�<�<�D� �,�D����D��#�D���D���:�<�<�D� �+�D����D��!�D���D���D���B�G�N��B�G�A�J���B�G�A�J���K�K��O�O�O��NrAc�8�tdd��}t}t��}d|j_d|_d|_d|_d|_||_	tj|_d|_
d|_d	|j_d
|jj_ddg|j_d	d
lm}|��|j_tj|jj_tj|jj_d|jj_d|jj_d	|jj_|��|jd_tj|jdj_tj|jdj_d|jdj_d|jdj_d	|jdj_|��|jd_tj |jdj_tj|jdj_d|jdj_d|jdj_d	|jdj_|��|jd_tj!|jdj_tj|jdj_d|jdj_d|jdj_d	|jdj_|�"|��|S)r�r�r�rr�r�r�r�rrr�rrr�r�r.r�r�)#rrkr�rPrsrmrnrprorQrr�r1rKrLrOrr4r�rr�r�rNr5r�r�r�r�r�r�r3�magentar�r<rk)r�rQr�r�s    r?�sampleStacked1r�.	sI���c�3���G��D�	�	�	�B�%�B�O��
�B�D�
�B�D��B�I��B�H��B�G��\�B�N��B�K��B�O��B�L��'*�B�O��$�%+�V�$4�B�O�!�;�;�;�;�;�;��Z�\�\�B�G�N�$*�J�B�G�N�!�"(�,�B�G�N��!+�B�G�N��"#�B�G�N��!"�B�G�N��"�
���B�G�A�J��'-�~�B�G�A�J��$�%+�\�B�G�A�J��"�$.�B�G�A�J��!�%&�B�G�A�J��"�$%�B�G�A�J��!�"�
���B�G�A�J��'-�|�B�G�A�J��$�%+�\�B�G�A�J��"�$.�B�G�A�J��!�%&�B�G�A�J��"�$%�B�G�A�J��!�"�
���B�G�A�J��'-�{�B�G�A�J��$�%+�\�B�G�A�J��"�$.�B�G�A�J��!�%&�B�G�A�J��"�$%�B�G�A�J��!��K�K��O�O�O��NrAc��eZdZdZdd�ZdS)�
SampleH5c4r�r�r�c���tj|||g|�Ri|��t��}d|_d|_d|_d|_t|_tj
|_d|_d|_
d|_d|_d|j_d|j_d	|j_d
|jj_ddg|j_|�|d
���|���dS)Nr�r�r�r.r�r�rrrr�rr�HBC)r6)rr@r�rmrnrprorkrQrr�r1rJrKrLrMrOrr	r
rPr4r�rrkr�)r>rorp�args�kwr�s      r?r@zSampleH5c4.__init__j	s������e�F�6�D�6�6�6�2�6�6�6�
�
!�
!����������	����������������������
� !���� "����!#����+.����(�)/��(8���%����������
�*�*�,�,�,�,�,rAN)r�r�)rBrCrDr�r@rFrAr?r�r�g	s.������-�-�-�-�-�-�-�-rAr�)h�__version__r�rkr��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�rrrr+r:r=rCrWr\r`rbrgrkrlrprtrvrxrzr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rFrAr?�<module>r�s"��
��	���������������� � � � � � �B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�7�6�6�6�6�6�6�6�G�G�G�G�G�G�G�G�7�7�7�7�7�7�7�7�4�4�4�4�4�4�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�J�J�J�J�J�J�J�J�J�J�J�J�J�J�_�_�_�_�_�_�_�_�_�_�_�_�X�X�X�X�X�X�X�X�4�4�4�4�4�4�5�5�5�5�5�5�������$�$�$�$�$��$�$�$�*v
"�v
"�v
"�v
"�v
"�x�v
"�v
"�v
"�p�����x�������������'�'�'�'�'�'�'�'�`�`�`�`�`��`�`�`�DO�O�O�O�O��$4�O�O�O�R�R�R�R�R�:�&8�R�R�R����>���<���: � � �F&�&�&�R&�&�&�R/�/�/�d5�5�5�p���:���:���:���B7�6�6�����8���B���B���B���B���F���:���8���8���>'�'�'�T&�&�&�R/�/�/�d/�/�/�d���8���8���8���87�6�6�����6���@���@���@���@���>4�4�4�l6�6�6�r-�-�-�-�-��-�-�-�-�-rA

Youez - 2016 - github.com/yon3zu
LinuXploit