Files
mcm-mfp/task3/__pycache__/08_visualize.cpython-313.pyc

112 lines
16 KiB
Plaintext
Raw Normal View History

2026-01-19 15:05:55 +08:00
<EFBFBD>
I<>mi<6D>$<00><01><><00>SrSSKJr SSKJr SSKJr SSKrSSKrSSK r
SSK r \"\R"55S- r\"\R"55S- r\R!SSS 9 \R!SSS 9 \R"R%S
\"\55 \R"R%S \"\55 SSKr\R*"S 5 SSKJr \"\5R55R6r\"SS 9"SS55rSSjrSSjrSSjr SSjr!SSjr"SSjr#SSjr$SSjr%\&S:Xa\%"5 gg)u 
Task 3 - Step 8: 可视化Fig.1/2/4/5
=====================================
输入:
- 01_distance.xlsx (sites: 经纬度、mu/sigma)
- 02_pairing.xlsx (selected_pairs: 34对配对连线)
- 03_allocation.xlsx (allocation: q*, E_total)
- 05_calendar.xlsx (calendar: 365天×2槽位排程)
- 06_evaluate.xlsx (pair_risk: 缺口概率分布)
输出:
- figures/fig1_pairing_map.png
- figures/fig2_allocation_scatter.png
- figures/fig4_calendar_heatmap.png
- figures/fig5_risk_distribution.png
<EFBFBD>)<01> annotations)<01> dataclass)<01>PathN<68>mm_task3_mplconfig<69>mm_task3_xdg_cacheT<65><02>parents<74>exist_ok<6F> MPLCONFIGDIR<49>XDG_CACHE_HOME<4D>Agg)<01>frozenc<01>R<00>\rSrSr%S\S'S\S'S\S'S\S'S\S'S\S'S rg
) <0B>Paths<68>.r<00> distance_xlsx<73> pairing_xlsx<73>allocation_xlsx<73> calendar_xlsx<73> evaluate_xlsx<73> figures_dir<69>N)<06>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__firstlineno__<5F>__annotations__<5F>__static_attributes__r<00><00>task3/08_visualize.pyrr.s&<00><00><17><17><16><16><19><19><17><17><17><17><15>rrc <01>r<00>[[S- [S- [S- [S- [S- [S- S9$)Nz01_distance.xlsxz02_pairing.xlsxz03_allocation.xlsxz05_calendar.xlsxz06_evaluate.xlsx<73>figures)rrrrrr)r<00>BASE_DIRrrr <00>_default_pathsr$8sD<00><00> <10><1E>!3<>3<><1D> 1<>1<> <20>#7<>7<><1E>!3<>3<><1E>!3<>3<><1C>y<EFBFBD>(<28>  <06>rc<01>L<00>UR5(d[SUS35eg)NzMissing required file: z&. Run the earlier steps first (01~06).)<02>exists<74>FileNotFoundError)<01>paths r <00> _require_filer)Cs,<00><00> <0F>;<3B>;<3B>=<3D>=<3D><1F>%<25>d<EFBFBD>V<EFBFBD>+Q<> R<>
<EFBFBD>
<EFBFBD> rc<01><00>X::aX4$X4$)Nr)<02>a<>bs r <00> _pair_keyr-Js<00><00><16>V<EFBFBD>A<EFBFBD>6<EFBFBD>'<27>!<21><16>'rc <01><00>[R"URSS9n[R"URSS9nUR 5nUSR [ 5US'[USR [ 55R[USR [ 555nUSRU5US'[R"SS S
9upEUR5H<>upg[ US5n[ US5n URUSU:HRS n
URUSU :HRS n URU
S U S /U
S U S /SSSSS9 M<> XSn XS)n UR!U S U S SSSS[#U 5S3SS9 [#U 5S :<3A>a)UR!U S U S SSSSS[#U 5S3SS 9 UR%S!5 UR'S"5 UR)S#5 UR+S$S%S&9 UR-S'S$S(9 UR.S)- nUR15 UR3U5 [R4"U5 U$)*N<>sites<65><01>
sheet_name<EFBFBD>selected_pairs<72>site_id<69> site_i_id<69> site_j_id<69> is_paired)g!@g@<40><><00><02>figsize<7A>dpir<00>lon<6F>latz#2c7fb8gffffff<66>?<3F><00>?<3F>)<04>color<6F>alpha<68> linewidth<74>zorder<65>z#d95f0e<30>333333<33>?zPaired sites (n=<3D>)<29>)<05>sr?r@<00>labelrB<00>z#636363<36><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>xzUnpaired sites (n=<3D>)rGr?r@<00>markerrHrBz-Fig.1 Pairing map (sites + selected 34 links)<29> Longitude<64>LatitudeT皙<54><E79A99><EFBFBD><EFBFBD><EFBFBD>?<3F>r@<00>best<73><02>loc<6F>frameonzfig1_pairing_map.png)<1B>pd<70>
read_excelrr<00>copy<70>astype<70>int<6E>set<65>union<6F>isin<69>plt<6C>subplots<74>iterrowsrT<00>iloc<6F>plot<6F>scatter<65>len<65> set_title<6C>
set_xlabel<EFBFBD>
set_ylabel<EFBFBD>grid<69>legendr<00> tight_layout<75>savefig<69>close)<0F>pathsr/<00>pairs<72>
paired_ids<EFBFBD>fig<69>ax<61>_<>row<6F>i<>j<>si<73>sj<73>paired<65>unpaired<65>outs r <00>fig1_pairing_mapr{Ns<><00><00> <0E>M<EFBFBD>M<EFBFBD>%<25>-<2D>-<2D>'<27> B<>E<EFBFBD> <0E>M<EFBFBD>M<EFBFBD>%<25>,<2C>,<2C>9I<39> J<>E<EFBFBD> <11>J<EFBFBD>J<EFBFBD>L<EFBFBD>E<EFBFBD><1C>Y<EFBFBD>'<27>.<2E>.<2E>s<EFBFBD>3<>E<EFBFBD>)<29><14><14>U<EFBFBD>;<3B>'<27>.<2E>.<2E>s<EFBFBD>3<>4<>:<3A>:<3A> <0B>E<EFBFBD>+<2B> <1E> %<25> %<25>c<EFBFBD> *<2A>+<2B><06>J<EFBFBD><1F>y<EFBFBD>)<29>.<2E>.<2E>z<EFBFBD>:<3A>E<EFBFBD>+<2B><16><11>l<EFBFBD>l<EFBFBD>:<3A>3<EFBFBD>7<>G<EFBFBD>C<EFBFBD><17>.<2E>.<2E>"<22><06><01> <0F><03>K<EFBFBD> <20> !<21><01> <0F><03>K<EFBFBD> <20> !<21><01> <12>Y<EFBFBD>Y<EFBFBD>u<EFBFBD>Y<EFBFBD>'<27>1<EFBFBD>,<2C> -<2D> 2<> 2<>1<EFBFBD> 5<><02> <12>Y<EFBFBD>Y<EFBFBD>u<EFBFBD>Y<EFBFBD>'<27>1<EFBFBD>,<2C> -<2D> 2<> 2<>1<EFBFBD> 5<><02>
<EFBFBD><07><07> <0F><05>Y<EFBFBD><02>5<EFBFBD> <09> "<22> <0F><05>Y<EFBFBD><02>5<EFBFBD> <09> "<22><1B><16><19><14> <10>
<EFBFBD> #<23><13><1B>%<25> &<26>F<EFBFBD><14>K<EFBFBD>(<28>(<28>)<29>H<EFBFBD><06>J<EFBFBD>J<EFBFBD><0E>u<EFBFBD> <0A><0E>u<EFBFBD> <0A>
<0C><17><12> <20><13>V<EFBFBD><1B> <0A>Q<EFBFBD>/<2F><10><0F><06> <0B>8<EFBFBD>}<7D>q<EFBFBD><18>
<EFBFBD>
<EFBFBD>
<EFBFBD> <14>U<EFBFBD>O<EFBFBD> <14>U<EFBFBD>O<EFBFBD><10><1B><15><16>&<26>s<EFBFBD>8<EFBFBD>}<7D>o<EFBFBD>Q<EFBFBD>7<><14> <13>
<EFBFBD><07>L<EFBFBD>L<EFBFBD>@<40>A<><06>M<EFBFBD>M<EFBFBD>+<2B><1E><06>M<EFBFBD>M<EFBFBD>*<2A><1D><06>G<EFBFBD>G<EFBFBD>D<EFBFBD><03>G<EFBFBD><1C><06>I<EFBFBD>I<EFBFBD>&<26>$<24>I<EFBFBD>'<27>
<0F>
<1B>
<1B>4<>
4<EFBFBD>C<EFBFBD><07><14><14><16><07>K<EFBFBD>K<EFBFBD><03><14><07>I<EFBFBD>I<EFBFBD>c<EFBFBD>N<EFBFBD> <0E>Jrc
<01><><00>[R"URSS9nUSR[S9nUSUSUS-- R[S9nUSUSUS-- R[S9nS U-
n[
R "S
S S S SS9upgSU4SU4SU4/n[Xx5GH8un up<>U RX<>SSSSS9 [R"U 5R5(a<>[R"U5R5(a<>[U 5S:<3A>a<>[R"X<>S
5n [R"[ [R"U 55[ [R "U 55S5n U SU -U S
-nU R#X<>SSSS9 U R%U
5 U R'S5 U R)SS S!9 GM; USR+S"5 UR-S#S$S%9 UR/5 UR0S&- nUR3US'S(9 [
R4"U5 U$))N<>
allocationr0<00>q_ratio<69><01>dtype<70>mu_i<5F>mu_j<5F>sigma_i<5F>sigma_jr=r>rL)<02> <00>ffffff@r7T)r9r:<00>shareyz $q^*/Q$ vs $\mu_i/(\mu_i+\mu_j)$z)$q^*/Q$ vs $\sigma_i/(\sigma_i+\sigma_j)$z)$q^*/Q$ vs $\sigma_j/(\sigma_i+\sigma_j)$rIg<00>?<3F>#3182bd<62>none)rGr@r?<00> edgecolorrF<00>dr<00>#de2d26<32>@rJ)r?rAr@rKrPrQz$q^*/Q$z,Fig.2 Allocation strategy scatter (34 pairs)<29>R<EFBFBD><1E><>Q<EFBFBD>?<3F><01>yzfig2_allocation_scatter.png<6E>tight<68><01> bbox_inches)rVrWr<00>to_numpy<70>floatr^r_<00>ziprc<00>np<6E>isfinite<74>allrd<00>polyfit<69>linspace<63>min<69>maxrbrerfrhrg<00>suptitlerjrrkrl)rm<00>dfr~<00>mu_share<72> sigma_share<72> sigma_j_sharerp<00>axes<65>panelsrq<00>titlerK<00>coef<65>xx<78>yyrzs r <00>fig2_allocation_scatterr<72><00>s<00><00> <0B><1D><1D>u<EFBFBD>,<2C>,<2C><1C> F<>B<EFBFBD><10><19>m<EFBFBD>$<24>$<24>5<EFBFBD>$<24>1<>G<EFBFBD><12>6<EFBFBD>
<EFBFBD>b<EFBFBD><16>j<EFBFBD>2<EFBFBD>f<EFBFBD>:<3A>5<>6<>@<40>@<40>u<EFBFBD>@<40>M<>H<EFBFBD><15>i<EFBFBD>=<3D>B<EFBFBD>y<EFBFBD>M<EFBFBD>B<EFBFBD>y<EFBFBD>M<EFBFBD>$A<>B<>L<>L<>SX<53>L<>Y<>K<EFBFBD><17>+<2B>%<25>M<EFBFBD><13> <0C> <0C>Q<EFBFBD><01>9<EFBFBD>#<23>d<EFBFBD>K<>I<EFBFBD>C<EFBFBD>
/<2F><08>9<> 7<><1B>E<> 7<><1D>G<><06>F<EFBFBD> <1E>d<EFBFBD>+<2B><0E><02>J<EFBFBD>U<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>1<EFBFBD><12>4<EFBFBD>y<EFBFBD>F<EFBFBD>
<EFBFBD>S<> <0A>;<3B>;<3B>q<EFBFBD>><3E> <1D> <1D> <1F> <1F>B<EFBFBD>K<EFBFBD>K<EFBFBD><07>$8<>$<<3C>$<<3C>$><3E>$><3E>3<EFBFBD>q<EFBFBD>6<EFBFBD>Q<EFBFBD>;<3B><15>:<3A>:<3A>a<EFBFBD>!<21>,<2C>D<EFBFBD><13><1B><1B>U<EFBFBD>2<EFBFBD>6<EFBFBD>6<EFBFBD>!<21>9<EFBFBD>-<2D>u<EFBFBD>R<EFBFBD>V<EFBFBD>V<EFBFBD>A<EFBFBD>Y<EFBFBD>/?<3F><13>E<>B<EFBFBD><15>a<EFBFBD><17>2<EFBFBD><1C><04>Q<EFBFBD><07>'<27>B<EFBFBD> <0E>G<EFBFBD>G<EFBFBD>B<EFBFBD>)<29>s<EFBFBD>#<23>G<EFBFBD> F<>
<EFBFBD> <0C> <0C>U<EFBFBD><1B>
<EFBFBD> <0A> <0A>c<EFBFBD><1A>
<EFBFBD><07><07><04>C<EFBFBD><07> <20>,<2C> <09><11>G<EFBFBD><16><16>y<EFBFBD>!<21><07>L<EFBFBD>L<EFBFBD>?<3F>4<EFBFBD>L<EFBFBD>H<><07><14><14><16>
<0F>
<1B>
<1B>;<3B>
;<3B>C<EFBFBD><07>K<EFBFBD>K<EFBFBD><03><17>K<EFBFBD>)<29><07>I<EFBFBD>I<EFBFBD>c<EFBFBD>N<EFBFBD> <0E>Jrc <01>R<00>[R"URSS9SS/nUSR[5US'[ [ USUS55n[R"URSS9/SQR5nUSR[5US'USR[5US'UR5VVVs0sHupEn[XE5[U5_M nnnn[R"URS S9n[R"S
[R[S 9n UR!5GHAup<>[ U S 5n S GH&n [#U SU S35R%5R'5nU SU S3nU R)SU S3[R5n[R*"U5(aM|[ U5nUS:Xa5[UR)U[R55X<>S-
U S-
4'M<>US:XdM<>[R*"U5(aM<>[ U5nUR)[UU5[R5X<>S-
U S-
4'GM) GMD [,R."SSS9unnUR1U R2SSS9nUR5SS/SS/S9 UR7S5 UR9S 5 /S!Qn[R:"S/USS"-5n/S#QnUR=UUS9 UR?UUS$S%S&9nURAS'5 URC5 URDS(- nURGUS)S*9 [,RH"U5 U$s snnnf)+Nr/r0r3<00>mur})r4r5<00>E_totalr4r5<00>calendar)imrFr<00>day)r>rF<00>slot_<74>_type<70>_site_i<5F>_site_j<5F>singler><00>dual)r<>g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@r7r8<00>auto<74>viridis)<02>aspect<63>cmaprzSlot 1zSlot 2)<01>labelsz Day of yearz2Fig.4 Calendar heatmap (expected service per slot)) <0C><00>r<><00>r<>r<>r<>r<>r<>r<>r<>r<><00><><EFBFBD><EFBFBD><EFBFBD>) <0C>Jan<61>Feb<65>Mar<61>Apr<70>May<61>Jun<75>Jul<75>Aug<75>Sep<65>Oct<63>Nov<6F>Decg<63><1E><>Q<EFBFBD><51>?g{<14>G<EFBFBD>z<EFBFBD>?)rq<00>fraction<6F>padzExpected servicezfig4_calendar_heatmap.pngr<67>r<>)%rVrWrrYrZ<00>dictr<74>rrXr<>r-r<>rr<><00>full<6C>nanr`<00>str<74>strip<69>lower<65>get<65>isnar^r_<00>imshow<6F>T<>
set_yticksrfre<00>cumsum<75>
set_xticks<EFBFBD>colorbar<61> set_labelrjrrkrl)rmr/<00>mu_by_id<69>allocrtru<00>e<>pair_E<5F>cal<61>expected<65>idxrsr<><00>slot<6F>typ<79>i_id<69>j_idrprq<00>im<69>
month_days<EFBFBD> month_starts<74> month_labels<6C>cbarrzs r <00>fig4_calendar_heatmapr<70><00>s$<00><00> <0E>M<EFBFBD>M<EFBFBD>%<25>-<2D>-<2D>'<27> B<>I<EFBFBD>t<EFBFBD>CT<43> U<>E<EFBFBD><1C>Y<EFBFBD>'<27>.<2E>.<2E>s<EFBFBD>3<>E<EFBFBD>)<29><14><13>C<EFBFBD><05>i<EFBFBD>(<28>%<25><04>+<2B>6<>7<>H<EFBFBD> <0E>M<EFBFBD>M<EFBFBD>%<25>/<2F>/<2F>L<EFBFBD> I<>-<2D> <06>
<EFBFBD>d<EFBFBD>f<EFBFBD>
<EFBFBD><1F>{<7B>+<2B>2<>2<>3<EFBFBD>7<>E<EFBFBD>+<2B><16><1E>{<7B>+<2B>2<>2<>3<EFBFBD>7<>E<EFBFBD>+<2B><16>7<<3C>~<7E>~<7E>7G<37> H<>7G<37>G<EFBFBD>A<EFBFBD>!<21>i<EFBFBD><01>o<EFBFBD>u<EFBFBD>Q<EFBFBD>x<EFBFBD>'<27>7G<37>F<EFBFBD> H<>
<0C>-<2D>-<2D><05>+<2B>+<2B>
<EFBFBD>
C<EFBFBD>C<EFBFBD><11>w<EFBFBD>w<EFBFBD>x<EFBFBD><12><16><16>u<EFBFBD>5<>H<EFBFBD><17>L<EFBFBD>L<EFBFBD>N<EFBFBD><08><03><11>#<23>e<EFBFBD>*<2A>o<EFBFBD><03><1A>D<EFBFBD><15>c<EFBFBD>E<EFBFBD>$<24><16>u<EFBFBD>-<2D>.<2E>/<2F>5<>5<>7<>=<3D>=<3D>?<3F>C<EFBFBD><13>e<EFBFBD>D<EFBFBD>6<EFBFBD><17>)<29>*<2A>A<EFBFBD><13><07><07>%<25><04>v<EFBFBD>W<EFBFBD>-<2D>r<EFBFBD>v<EFBFBD>v<EFBFBD>6<>A<EFBFBD><11>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD>z<EFBFBD><18><16>q<EFBFBD>6<EFBFBD>D<EFBFBD><12>h<EFBFBD><EFBFBD>.3<EFBFBD>H<EFBFBD>L<EFBFBD>L<EFBFBD><14>r<EFBFBD>v<EFBFBD>v<EFBFBD>4N<34>.O<><08>q<EFBFBD><17>$<24><11>(<28>*<2A>+<2B><14><06><1D><15>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A>:<3A><1C><1A>1<EFBFBD>v<EFBFBD><04>.4<EFBFBD>j<EFBFBD>j<EFBFBD><19>4<EFBFBD><14>9N<39>PR<50>PV<50>PV<50>.W<><08>q<EFBFBD><17>$<24><11>(<28>*<2A>+<2B><1B>#<23>$<12>l<EFBFBD>l<EFBFBD>9<EFBFBD>#<23>6<>G<EFBFBD>C<EFBFBD><12> <0B><19><19>8<EFBFBD>:<3A>:<3A>f<EFBFBD>9<EFBFBD><19> =<3D>B<EFBFBD><06>M<EFBFBD>M<EFBFBD>1<EFBFBD>a<EFBFBD>&<26>(<28>H<EFBFBD>!5<>M<EFBFBD>6<><06>M<EFBFBD>M<EFBFBD>-<2D> <20><06>L<EFBFBD>L<EFBFBD>E<>F<>A<>J<EFBFBD><15>9<EFBFBD>9<EFBFBD>a<EFBFBD>S<EFBFBD>:<3A>c<EFBFBD>r<EFBFBD>?<3F>2<>3<>L<EFBFBD>g<>L<EFBFBD><06>M<EFBFBD>M<EFBFBD>,<2C>|<7C>M<EFBFBD>4<> <0E><<3C><<3C><02>r<EFBFBD>D<EFBFBD>d<EFBFBD><<3C> ;<3B>D<EFBFBD><08>N<EFBFBD>N<EFBFBD>%<25>&<26><07><14><14><16>
<0F>
<1B>
<1B>9<>
9<EFBFBD>C<EFBFBD><07>K<EFBFBD>K<EFBFBD><03><17>K<EFBFBD>)<29><07>I<EFBFBD>I<EFBFBD>c<EFBFBD>N<EFBFBD> <0E>J<EFBFBD><4A>UIs<00>"N"c <01>.<00>[R"URSS9R5nUSR [
S9nU[ R"U5n[R"SSSSS 9up4US
nURUS S S SS9 UR[ [ R"U55SSS[ R"U5S3S9 URS5 URS5 URS5 UR!SSS9 UR#SSS9 USn[ R$"U5SSS2nUR'[ R("S[+U5S-5USSS S!9 URS"5 URS#5 URS$5 UR!SSS9 UR-S%S&S'9 UR/5 UR0S(- nUR3US)S*9 [R4"U5 U$)+N<> pair_riskr0<00>shortfall_prob_eitherrr>rF)<02> r<>r7r8r<00>
r<>rD<00>white)<04>binsr?r@r<>r<>r<>zmean=z.3f)r?rArH<00> Histogramz#Shortfall probability (either site)<29>CountTrPrQrRrSr<><00>og @g<00>?)rM<00>
markersizerAzSorted by risk (descending)z Pair rankzShortfall probabilityz'Fig.5 Risk distribution across 34 pairsr<73>r<>zfig5_risk_distribution.pngr<67>r<>)rVrWrrXr<>r<>r<>r<>r^r_<00>hist<73>axvline<6E>meanrerfrgrhri<00>sortrb<00>arangerdr<>rjrrkrl)rm<00>risk<73>prpr<>rq<00>p_sortedrzs r <00>fig5_risk_distributionr<6E><00>s<><00><00> <0A>=<3D>=<3D><15>,<2C>,<2C><1B> E<> J<> J<> L<>D<EFBFBD> <0C> $<24>%<25>.<2E>.<2E>U<EFBFBD>.<2E>;<3B>A<EFBFBD> <09>"<22>+<2B>+<2B>a<EFBFBD>.<2E><19>A<EFBFBD><13> <0C> <0C>Q<EFBFBD><01>9<EFBFBD>#<23>><3E>I<EFBFBD>C<EFBFBD> <0A>a<EFBFBD><17>B<EFBFBD><06>G<EFBFBD>G<EFBFBD>A<EFBFBD>B<EFBFBD>i<EFBFBD>t<EFBFBD>w<EFBFBD>G<EFBFBD>G<><06>J<EFBFBD>J<EFBFBD>u<EFBFBD>R<EFBFBD>W<EFBFBD>W<EFBFBD>Q<EFBFBD>Z<EFBFBD> <20> <09>S<EFBFBD>%<25>PR<50>PW<50>PW<50>XY<58>PZ<50>[^<5E>O_<4F>H`<60>J<EFBFBD>a<><06>L<EFBFBD>L<EFBFBD><1B><1D><06>M<EFBFBD>M<EFBFBD>7<>8<><06>M<EFBFBD>M<EFBFBD>'<27><1A><06>G<EFBFBD>G<EFBFBD>D<EFBFBD><03>G<EFBFBD><1C><06>I<EFBFBD>I<EFBFBD>&<26>$<24>I<EFBFBD>'<27> <0A>a<EFBFBD><17>B<EFBFBD><11>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD>$<24>B<EFBFBD>$<24><1F>H<EFBFBD><06>G<EFBFBD>G<EFBFBD>B<EFBFBD>I<EFBFBD>I<EFBFBD>a<EFBFBD><13>X<EFBFBD><1D><11>*<2A> +<2B>X<EFBFBD>c<EFBFBD>c<EFBFBD>]`<60>G<EFBFBD>a<><06>L<EFBFBD>L<EFBFBD>.<2E>/<2F><06>M<EFBFBD>M<EFBFBD>+<2B><1E><06>M<EFBFBD>M<EFBFBD>)<29>*<2A><06>G<EFBFBD>G<EFBFBD>D<EFBFBD><03>G<EFBFBD><1C><07>L<EFBFBD>L<EFBFBD>:<3A>d<EFBFBD>L<EFBFBD>C<><07><14><14><16>
<0F>
<1B>
<1B>:<3A>
:<3A>C<EFBFBD><07>K<EFBFBD>K<EFBFBD><03><17>K<EFBFBD>)<29><07>I<EFBFBD>I<EFBFBD>c<EFBFBD>N<EFBFBD> <0E>Jrc<01><><00>[5nURURURURUR
4Hn[ U5 M URRSSS9 [S5 [S5 [S5 [U5n[SUR[535 [U5n[SUR[535 [U5n[SUR[535 [U5n[SUR[535 g)NTrz<============================================================zTask 3 - Step 8: VisualizationzSaved: )r$rrrrrr)r<00>mkdir<69>printr{<00> relative_tor#r<>r<>r<>)rmr<><00>out1<74>out2<74>out4<74>out5s r <00>mainr s<00><00> <1A> <1C>E<EFBFBD> <0A><1B><1B> <0A><1A><1A> <0A><1D><1D> <0A><1B><1B> <0A><1B><1B> <06><01> <16>a<EFBFBD><18><06>
<EFBFBD><15><15><1B><1B>D<EFBFBD>4<EFBFBD><1B>8<> <09>(<28>O<EFBFBD> <09>
*<2A>+<2B> <09>(<28>O<EFBFBD> <1B>E<EFBFBD> "<22>D<EFBFBD> <09>G<EFBFBD>D<EFBFBD>$<24>$<24>X<EFBFBD>.<2E>/<2F>
0<EFBFBD>1<> "<22>5<EFBFBD> )<29>D<EFBFBD> <09>G<EFBFBD>D<EFBFBD>$<24>$<24>X<EFBFBD>.<2E>/<2F>
0<EFBFBD>1<> <20><15> '<27>D<EFBFBD> <09>G<EFBFBD>D<EFBFBD>$<24>$<24>X<EFBFBD>.<2E>/<2F>
0<EFBFBD>1<> !<21>%<25> (<28>D<EFBFBD> <09>G<EFBFBD>D<EFBFBD>$<24>$<24>X<EFBFBD>.<2E>/<2F>
0<EFBFBD>1r<00>__main__)<02>returnr)r(rr
<00>None)r+rZr,rZr
ztuple[int, int])rmrr
r)r
r )'<27>__doc__<5F>
__future__r<00> dataclassesr<00>pathlibr<00>os<6F>tempfile<6C>numpyr<79><00>pandasrV<00>
gettempdir<EFBFBD>_mpl_config_dir<69>_xdg_cache_dirr<00>environ<6F>
setdefaultr<EFBFBD><00>
matplotlib<EFBFBD>use<73>matplotlib.pyplot<6F>pyplotr^<00>__file__<5F>resolve<76>parentr#rr$r)r-r{r<>r<>r<>rrrrr <00><module>r s6<00><01><04>$#<23>!<21><18> <09><0F><12><13><16>x<EFBFBD>*<2A>*<2A>,<2C>-<2D>0D<30>D<><0F><15>h<EFBFBD>)<29>)<29>+<2B>,<2C>/C<>C<><0E><0F><15><15>d<EFBFBD>T<EFBFBD><15>2<><0E><14><14>T<EFBFBD>D<EFBFBD><14>1<><02>
<EFBFBD>
<EFBFBD><15><15>n<EFBFBD>c<EFBFBD>/<2F>&:<3A>;<3B><02>
<EFBFBD>
<EFBFBD><15><15>&<26><03>N<EFBFBD>(;<3B><<3C><11>
<EFBFBD><0E><0E>u<EFBFBD><15><1F> <10><08>><3E> !<21> !<21> #<23> *<2A> *<2A><08> <0B>$<24><17><16><16><18><16><06>
<EFBFBD>(<28>><0F>B"<0F>J4<0F>n<0F>@2<>4 <0C>z<EFBFBD><19><08>F<EFBFBD>r