/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . ĠJetBrains Ġs . r . o . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġjet brains . datal ore . plot Demo . model . plot Config Ċ Ċ import Ġjet brains . datal ore . plot . parse Plot Spec Ċ import Ġjet brains . datal ore . plot Demo . data . I ris Ċ import Ġjet brains . datal ore . plot Demo . model . util . Demo Util Ċ Ċ open Ġclass ĠTooltip Anchor Ġ{ ĊĠĠĠ Ġfun Ġplot Spec List (): ĠList < Mutable Map < String , ĠAny >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop _ right (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop _ left (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop _ center (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom _ right (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom _ left (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom _ center (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmiddle _ right (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmiddle _ left (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmiddle _ center (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġover Cursor () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdata (): ĠMap < String , ĠList <* >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount 1 Ġ= Ġ 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount 2 Ġ= Ġ 5 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrating A Ġ= ĠDemo Util . gauss ( count 1 , Ġ 1 2 , Ġ 0 . 0 , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrating B Ġ= ĠDemo Util . gauss ( count 2 , Ġ 2 4 , Ġ 0 . 0 , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrating Ġ= ĠDemo Util . zip ( rating A , Ġrating B ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcond Ġ= ĠDemo Util . zip ( Demo Util . fill (" a ", Ġcount 1 ), ĠDemo Util . fill (" b ", Ġcount 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠList <* >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" cond "] Ġ= Ġcond ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" rating "] Ġ= Ġrating ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġwith Tooltip Anchor ( anchor : ĠString ): ĠMutable Map < String , ĠAny > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Position als Ġ= Ġ"^ Y " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaes Y Min Ġ= Ġ"^ ymin " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaes Y Max Ġ= Ġ"^ ymax " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaes Middle Ġ= Ġ"^ middle " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaes Lower Ġ= Ġ"^ lower " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaes Upper Ġ= Ġ"^ upper " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspec Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' kind ': Ġ' plot ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' gg title ': Ġ{' text ': Ġ'$ anchor '}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' mapping ': Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' x ': Ġ' cond ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' y ': Ġ' rating ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' fill ': Ġ' cond ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' layers ': Ġ Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' geom ': Ġ' box plot ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' tooltip s ' Ġ: Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' tooltip _ formats ': Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġ' field ' Ġ: Ġ'$ all Position als ', Ġ' format ' Ġ: Ġ'. 0 f ' Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġ' field ' Ġ: Ġ'$ aes Middle ', Ġ' format ' Ġ: Ġ'. 2 f ' Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' tooltip _ lines ': Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' min / max |$ aes Y Min /$ aes Y Max ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' lower / upper |$ aes Lower /$ aes Upper ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'@ |$ aes Middle ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' tooltip _ anchor ': Ġ'$ anchor ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplot Spec Ġ= ĠHashMap ( parse Plot Spec ( spec )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplot Spec [" data "] Ġ= Ġdata () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġplot Spec ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġmiddle _ right (): ĠMutable Map < String , ĠAny > Ġ= Ġwith Tooltip Anchor (" middle _ right ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġmiddle _ center (): ĠMutable Map < String , ĠAny > Ġ= Ġwith Tooltip Anchor (" middle _ center ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġmiddle _ left (): ĠMutable Map < String , ĠAny > Ġ= Ġwith Tooltip Anchor (" middle _ left ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtop _ right (): ĠMutable Map < String , ĠAny > Ġ= Ġwith Tooltip Anchor (" top _ right ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtop _ left (): ĠMutable Map < String , ĠAny > Ġ= Ġwith Tooltip Anchor (" top _ left ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtop _ center (): ĠMutable Map < String , ĠAny > Ġ= Ġwith Tooltip Anchor (" top _ center ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbottom _ right (): ĠMutable Map < String , ĠAny > Ġ= Ġwith Tooltip Anchor (" bottom _ right ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbottom _ left (): ĠMutable Map < String , ĠAny > Ġ= Ġwith Tooltip Anchor (" bottom _ left ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbottom _ center (): ĠMutable Map < String , ĠAny > Ġ= Ġwith Tooltip Anchor (" bottom _ center ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġover Cursor (): ĠMutable Map < String , ĠAny > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspec Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' kind ': Ġ' plot ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' mapping ': Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' x ': Ġ' se pal Ġlength Ġ( cm )', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' group ': Ġ' target ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' color ': Ġ' se pal Ġwidth Ġ( cm )', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' fill ': Ġ' target ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' layers ': Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' geom ': Ġ' area ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' stat ': Ġ' density ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' position ' Ġ: Ġ' identity ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' alpha ': Ġ 0 . 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' tooltip s ' Ġ: Ġ{ Ġ' tooltip _ anchor ': Ġ' top _ right ' Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplot Spec Ġ= ĠHashMap ( parse Plot Spec ( spec )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplot Spec [" data "] Ġ= ĠI ris . df ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġplot Spec ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ