ó
    )–rc>  ã            	       ó”  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSKrSSK
JrJrJrJrJrJr  SrSrSrSrSrS	r\R.                  " S
0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S_S!S"_S#S_S$S_S"SSS%.ES&9  \R0                  " S'S(S)S*S+S,S-.S.9  \" 5       rS/ r\R                  S05      S1 5       rg)2zRoutes plots.é    N)ÚBottleÚrouteÚviewÚresponseÚrequestÚabortz#c12f4dz#F29E22z#5FA05Az#AA228Cz#F07024é   zHelvetica Neuezaxes.axisbelowFzaxes.edgecolorz#dedddczaxes.facecolorÚNonez	axes.gridzaxes.labelcolorz#161616zaxes.spines.rightzaxes.spines.topzfigure.facecolorÚwhitezlines.solid_capstyleÚroundzpatch.edgecolorÚwzpatch.force_edgecolorTz
text.colorzxtick.bottomzxtick.colorzxtick.directionÚoutz	xtick.topzytick.color)zytick.directionz
ytick.leftzytick.right)ÚfontÚrcÚnotebooké   é   é   éd   i,  )z	font.sizezaxes.titlesizezaxes.labelsizez
figure.dpizsavefig.dpi)r   c                 ó   • U S:”  a  SU -  $ S$ )Né2   ú%.0f%%Ú © )Úpcts    Ú/var/www/vevn/routes/plot.pyÚautopctr   Q   s   € Ø" R›xˆH�s‰NÐ/¨RÐ/ó    z/surveys/<name>/plot.pngc                 óî  • [         R                  " U 5      u  p[        R                  " [        R
                  R                  S5      5      n[        R
                  R                  S5      n[        R
                  R                  S5      n[        R
                  R                  S5      n[        R
                  R                  S5      n[        R
                  R                  S5      n[        R
                  R                  S5      n	[         R                  " U 5      n
U
[        U5         n[         R                  " X[         R                  " U 5      U5      nXU      n[        [        /nUS:X  a‰  [        R                  " XU      R                  5       XX   XY   S	5      n[         R"                  R%                  XÕU      S
   /XÕU      S   /XÕU      S   /S.5      R&                  n[(        [*        [,        /n[.        R0                  R3                  5       u  pïXW   S:X  a�  US:X  a  X»S:„     nUR5                  S	S9S-  nUR6                  R9                  SUSSSSSS.S S9n[.        R0                  R;                  SSSS9nUR=                  5       R?                  U5        URA                  5         XW   S:X  aŒ  [(        S/nURC                  5       R6                  R9                  SU[D        SSS S!0S"S S#9n[.        R0                  R;                  SSSS9nUR=                  5       R?                  U5        URA                  5         GO)XW   S$:X  Ga   UR5                  S	S9S-  nUR6                  RG                  US9nURI                  URJ                  S   S%S&S'9n[M        [O        U5      5       H:  nUU   RQ                  S(5        UU   RS                  UU[O        U5      -     5        M<     S)RU                  [V        RX                  " XV   S*5      5      nUR[                  US+S,9  US:X  a  UR]                  5       R_                  S-5        URa                  5       R_                  S-5        URb                  S.   R_                  S-5        URb                  S/   R_                  S-5        URb                  S0   R_                  S	5        URb                  S1   R_                  S-5        / nURe                  5        Hj  nURQ                  S5        URg                  S5        S)RU                  [V        RX                  " URi                  5       S25      5      nURk                  U5        Ml     URm                  U5        [n        Rp                  " 5       nURs                  US3S4S59  S6[t        l;        [.        R0                  Ry                  5         [.        R0                  R{                  5       R}                  5         UR                  5       $ )7Nzselected-answersÚtypeÚreadingÚquestionÚplotz
good-regexz	bad-regexÚsatisfactionTÚbadÚneitherÚgood)zInsatisfecho/azNi nizSatisfecho/azDona partidar   )Ú	normalizer   r   z%.1f%%r   gÍÌÌÌÌÌè?r   Úbold)ÚcolorÚweight)ÚylabelÚcolorsr   ÚfontsizeÚpctdistanceÚ	textpropsÚlabels)r   r   g333333ã?)r*   z
Dona totalz	#00000000é    r*   z#999999éZ   )r,   r-   r   r.   r/   r0   Ú
startangler1   zBarras verticalesr   é   )ÚfmtÚpaddingr   Ú
é   é(   )ÚpadFÚtopÚrightÚbottomÚlefté
   ÚsvgÚtight)ÚformatÚbbox_incheszimage/svg+xml)@ÚsurveyparserÚ
get_surveyÚjsonÚloadsr   ÚqueryÚgetÚget_readingsÚintÚfilter_surveyÚget_metadataÚPRIMARYÚ	SECONDARYÚreadingparserÚclassifyÚto_frameÚpandasÚ	DataFrameÚ	from_dictÚTÚGOODÚOKÚBADÚ
matplotlibÚpyplotÚsubplotsÚvalue_countsr#   ÚpieÚCircleÚgcaÚ
add_artistÚtight_layoutÚsqueezer   ÚbarÚ	bar_labelÚ
containersÚrangeÚlenÚset_fontsizeÚ	set_colorÚjoinÚtextwrapÚwrapÚ	set_titleÚ	get_xaxisÚset_visibleÚ	get_yaxisÚspinesÚget_xticklabelsÚset_rotationÚget_textÚappendÚset_xticklabelsÚioÚBytesIOÚsavefigr   Úcontent_typeÚcloseÚfigureÚclearÚgetvalue)ÚnameÚsurveyÚ
propertiesÚselected_answersr    r!   r"   r#   Ú
good_regexÚ	bad_regexÚreadingsÚ	dataframer-   r$   ÚfigÚaxÚcircleÚboxesÚiÚtitleÚ	new_textsÚtickÚtextÚ
png_outputs                           r   Úplot_readingr“   T   s6  € ä%×0Ò0°Ó6Ñ€FÜ—z’z¤'§-¡-×"3Ñ"3Ð4FÓ"GÓHÐÜ�=‰=×Ñ˜VÓ$€DÜ�m‰m×Ñ 	Ó*€GÜ�}‰}× Ñ  Ó,€HÜ�=‰=×Ñ˜VÓ$€DÜ—‘×"Ñ" <Ó0€JÜ—‘×!Ñ! +Ó.€Iä×(Ò(¨Ó.€HØ”s˜7“|Ñ$€Gô ×'Ò'¨¼L×<UÒ<UÐVZÓ<[Ð]mÓn€Fð ˜xÑ(Ñ)€IÜœ	Ð#€Fð ˆ~ÓÜ$×-Ò-¨f¸XÑ5FÑ.G×.PÑ.PÓ.RÐT[ÑTgÐipÑi{ð  ~Bó  CˆÜ×$Ñ$×.Ñ.Ø+°HÑ,=Ñ>¸uÑEÐFØ"¨8Ñ#4Ñ5°iÑ@ÐAØ)°(Ñ*;Ñ<¸VÑDÐEñ0
ó ÷ ‰1ð	 	ô
 œ"œcÐ#ˆô ×Ñ×(Ñ(Ó*�G€Cà�}˜Ó&Ø�>Ó!Ø!¨a¡-Ñ0ˆIà×+Ñ+°dÐ+Ð;¸cÑAˆ	Ø�^‰^×ÑØØØØØØ#*°fÑ>Øð  ð 
ˆô ×"Ñ"×)Ñ)¨&°#¸wÐ)ÐGˆØ�‰‹	×Ñ˜VÔ$à×ÑÔà�}˜Ó$Ü˜Ð&ˆà×ÑÓ ×%Ñ%×)Ñ)ØØÜØØØ! 9Ð.ØØð *ð 	
ˆô ×"Ñ"×)Ñ)¨&°#¸wÐ)ÐGˆØ�‰‹	×Ñ˜VÔ$à×ÑÖà	‰Ð-Ô	-Ø×+Ñ+°dÐ+Ð;¸cÑAˆ	Ø�^‰^×Ñ¨ÐÐ/ˆð —‘˜RŸ]™]¨1Ñ-°XÈ�ÐKˆÜ”s˜5“zÖ"ˆAØ�!‰H×!Ñ! "Ô%Ø�!‰H×Ñ˜v a¬#¨f«+¡oÑ6Ö7ñ #ð —	‘	œ(Ÿ-š-¨Ñ(9¸2Ó>Ó?ˆØ
�‰�U ˆÑ#ð �>Ó!Ø�L‰L‹N×&Ñ& uÔ-Ø
�‰‹×"Ñ" 5Ô)Ø
�	‰	�%Ñ×$Ñ$ UÔ+Ø
�	‰	�'Ñ×&Ñ& uÔ-Ø
�	‰	�(Ñ×'Ñ'¨Ô-Ø
�	‰	�&Ñ×%Ñ% eÔ,ð ˆ	Ø×&Ñ&Ö(ˆDØ×Ñ˜bÔ!Ø×Ñ˜aÔ Ø—9‘9œXŸ]š]¨4¯=©=«?¸BÓ?Ó@ˆDØ×Ñ˜TÖ"ñ	 )ð 	×Ñ˜9Ô%ô —’“€JØ‡K�K�
 U¸'€KÑBØ+„HÔÜ×Ñ×ÑÔÜ×Ñ×ÑÓ×$Ñ$Ô&à×ÑÓ Ð r   )Ú__doc__r[   ÚseabornrG   rm   ry   rE   rQ   rT   ÚmathÚbottler   r   r   r   r   r   rZ   rY   rX   rO   rP   ÚMAX_SATISF_CHARSÚsetÚset_contextr#   r   r“   r   r   r   Ú<module>r›      s„  ðñB Û Û ß N× N× N× Nß @× @à€Ø€Ø€Ø
€Ø€	ØÐ ð ‡‚Ð#ð +Ø�eð+à�ið+ð �fð+ð �ð	+ð
 �yð+ð ˜ð+ð �uð+ð ˜ð+ð ˜Gð+ð �sð+ð ˜Tð+ð �)ð+ð �Eð+ð �9ð+ð �uð+ð  �ð!+ð" �9ð#+ð$ ØØò)+ò ð, × Ò �JØØØØØñ&ò ñ ƒx€ò0ð ‡�Ð&Ó'ñt!ó (ñt!r   