3 पॉइंट द्वारा GN⁺ 2023-07-16 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Lets-Plot Grammar of Graphics सिद्धांत पर आधारित एक मल्टीप्लेटफ़ॉर्म plotting लाइब्रेरी है, जो Python और Kotlin में सांख्यिकीय डेटा visualization को सपोर्ट करती है
  • यह Python और Kotlin के लिए अलग-अलग implementation प्रदान करती है, ताकि notebook environment से लेकर IDE और app development तक हर ecosystem के workflow के अनुसार इसका उपयोग किया जा सके
  • Python में plots को notebook के अलावा PyCharm और IntelliJ IDEA के SciView में भी देखा जा सकता है
  • Kotlin में यह Kotlin notebook से लेकर Compose-Multiplatform apps तक के visualization use cases को लक्ष्य बनाती है
  • Geocoding, GeoDataFrame plotting, और tooltip·annotation customization जैसी सुविधाएँ देकर यह spatial data और interactive plot बनाने में भी उपयोगी है

Lets-Plot का अवलोकन

  • Lets-Plot Grammar of Graphics सिद्धांत पर आधारित एक मल्टीप्लेटफ़ॉर्म plotting लाइब्रेरी है
  • अगर आप ggplot2 और Grammar of Graphics को साथ में सीखना चाहते हैं, तो Hadley Wickham की “ggplot2: Elegant Graphics for Data Analysis” को संदर्भ सामग्री के रूप में सुझाया गया है
  • शुरुआत करने की सामग्री और उदाहरण नीचे दिए गए रास्तों पर उपलब्ध हैं

समर्थित प्लेटफ़ॉर्म और प्रमुख सुविधाएँ

  • Python

  • Kotlin

    • यह Grammar of Graphics for Kotlin के रूप में उपलब्ध Kotlin मल्टीप्लेटफ़ॉर्म visualization लाइब्रेरी है
    • यह Kotlin notebook से लेकर Compose-Multiplatform apps तक Kotlin ecosystem के use cases को लक्ष्य बनाती है
  • भू-स्थानिक visualization

    • Geocoding मॉड्यूल से spatial objects खोजे जा सकते हैं
    • अगर आपके पास पहले से GeoDataFrame है, तो उसे सीधे plot किया जा सकता है
  • tooltip और annotation

    • plot layers के tooltip और annotation के लिए content, value format, और appearance को customize किया जा सकता है

1 टिप्पणियां

 
GN⁺ 2023-07-16
Hacker News की राय
  • बढ़िया है। लगता है यह ggplot2-स्टाइल graphics grammar पर आधारित है। उदाहरण यहां देखे जा सकते हैं: https://lets-plot.org/pages/charts.html
    डेटा प्लॉट भी काफी अच्छे लगते हैं: https://lets-plot.org/pages/charts.html#discrete-icon-discre...
    distribution plots भी ऐसे ही हैं: https://lets-plot.org/pages/charts.html#visualization-of-dis...
    Python की ggplot2-स्टाइल plotting library plotnine की तुलना में यह प्रोजेक्ट कैसा है, यह जानने की उत्सुकता है

    • जानना चाहता हूं कि ggplot2 इतना general-purpose है कि मनचाहा कोई भी graph बनाया जा सके, या फिर जिन तरीकों/किस्मों के graph बनाए जा सकते हैं उनमें इसकी अपनी मजबूत शैली है। हालांकि इस library की सबसे अच्छी बात शायद यह हो सकती है कि इसे Kotlin में भी इस्तेमाल किया जा सकता है
  • R के अलावा अन्य भाषाओं में ggplot family libraries की कमी यह है कि original में उपलब्ध शानदार add-on libraries[1] की बहुत बड़ी संख्या हाथ से निकल जाती है। निजी तौर पर, मैं Python में काफी data processing करने के बाद उसे R में export करता हूं, और सारे graphics वहीं बनाता हूं
    लगता है statistics वाले लोग graphics को ज्यादा अहमियत देते हैं और उन्हें polished बनाने में ज्यादा समय लगाते हैं। साथ ही Copilot, सीखने के लिए बहुत सामग्री होने की वजह से, R-based ggplot semantics और options में सचमुच अच्छी मदद करता है। ggplot clone libraries के subtle differences के साथ भी ऐसा होगा या नहीं, यह साफ नहीं है
    [1] https://youtu.be/7UjA_5gNvdw

    • अच्छा वीडियो है। यह अच्छी तरह दिखाता है कि R explanation और visualization में अतिरिक्त expressive power देता है। एक और Python plotting wrapper सीखने के बजाय थोड़ा R सीखना बेहतर हो सकता है
    • यह सही है कि Copilot R-based ggplot semantics और options में अच्छी मदद करता है, लेकिन मुझे नहीं लगता कि ऐसे फर्क large language models के लिए बड़ी बाधा होंगे। अगर किसी script को एक भाषा से दूसरी भाषा में बदलकर देखें, तो पता चलता है कि large language models कितनी अच्छी तरह generalize करते हैं—हालांकि वे perfect नहीं हैं
      पर्याप्त context दिया जाए तो शायद ये उपयोगी नतीजे दे देंगे
  • यह भी Python को graphics grammar interface देने वाले plotnine [0] से काफी मिलता-जुलता लगता है। फिर भी मुझे ggplot पसंद है, इसलिए research में इसे इस्तेमाल करने के दिन का इंतजार है
    अच्छा होगा अगर ggthemes, scientificplots [1] और अन्य ggplot libraries को lets-plot पर port या reimplement किया जा सके
    0: https://plotnine.readthedocs.io/en/stable/
    1: https://github.com/garrettj403/SciencePlots

  • समझ नहीं आता इसकी जरूरत क्यों है। क्या कोई एक और plotting library के लिए बेताब था?

    • सिर्फ यह कि यह statistical plots बना सकती है और matplotlib पर आधारित नहीं है, अपने-आप में अच्छी शुरुआत है। Plotly पेचीदा है, Altair की usability खास नहीं है, bokeh matplotlib जैसी imperative style में है और थोड़ा heavy भी है
      Seaborn अच्छा है, लेकिन फिर भी matplotlib के ऊपर की leaky abstraction से जूझना पड़ता है, जिससे composition मुश्किल हो जाती है और interactivity भी मुश्किल से मिलती है। इसलिए मुझे ऐसी ही चीज चाहिए। मुझे तेज और native feel वाले अच्छे interactive charts चाहिए थे, इसलिए मैंने खुद बनाने की कोशिश भी की थी। Ggplot सिर्फ इस पर focus करने देता है कि आप क्या draw करना चाहते हैं और dataframe डालने देता है; यह भी वैसा ही दिखता है
    • लगता है इसे JetBrains के नए Kotlin Notebooks में इस्तेमाल करने के लिए बनाया गया है
    • हर कोई चाहता है। alternatives में सबकी बड़ी कमियां हैं, इसलिए competition बढ़ना अच्छा है
  • इस graphics grammar तरीके से plots बनाने के लिए कोई Python-centric tutorial या guide है? या फिर ggplot2 की किताब पढ़कर R examples को Python में translate करना पड़ेगा?

  • सब कुछ Kotlin Multiplatform है और ऊपर से केवल एक पतला Python wrapper लगा है। काफी आश्चर्यजनक है

    • अगर इसे सभी Compose Multiplatform targets पर इस्तेमाल किया जा सके तो और भी ज्यादा आश्चर्य होगा। अभी लगता है कि यह Kotlin/JS और JVM support करता है: https://github.com/JetBrains/lets-plot-kotlin#in-jvm-js
  • प्लॉट लाइब्रेरीज़ में सबसे बड़ी समस्या यह थी कि वे लाखों डेटा पॉइंट्स को तुरंत ठीक से हैंडल नहीं कर पाती थीं। पिछले डेटा साइंस प्रोजेक्ट में मैंने प्रमुख plotting libraries सब आज़माईं, लेकिन कुछ मिलियन पॉइंट्स से आगे कोई भी ठीक से काम नहीं कर रही थी
    मैं ऐसा ग्राफ़ चाहता था जिसे real time में visualize और zoom in/out किया जा सके, लेकिन वही प्रोजेक्ट का कठिन हिस्सा बन गया। सिर्फ़ एक product ने दावा किया कि वह cloud GPU से इसे प्रोसेस कर सकता है, लेकिन उसके लिए paid subscription चाहिए था और डेटा cloud पर अपलोड करना पड़ता था। मुझे एक और library नहीं, बल्कि ऐसी library चाहिए थी जो सच में अच्छे से काम करे और plotting के लिए local GPU का इस्तेमाल कर सके

    • यह संभव है: https://github.com/wwwtyro/candygraph
      examples वाले हिस्से में नीचे जाएँ तो बहुत सारे points वाले plots दिखेंगे: https://wwwtyro.github.io/candygraph/examples/dist/
    • Interactivity, 3D plots, और plot styling support होने पर भी कई बार वे कच्चे लगते हैं। या फिर वे Matlab के गैर-intuitive plotting interface की नकल करने की कोशिश करते हैं
    • हैरानी की बात है कि immediate mode graph libraries इस use case के लिए काफ़ी अच्छी बैठती हैं
      https://github.com/epezent/implot
      Java: https://github.com/SpaiR/imgui-java
      Rust भी है:
      https://www.egui.rs/#Demo
      Open Plot demo देखें। web पर शायद WASM में compile कर देना ठीक रहेगा। लगता है सिर्फ़ graph को WASM में बनाकर मौजूदा DOM में embed किया जा सकता है
    • अगर आप Julia इस्तेमाल करते हैं, तो Makie इस काम को बहुत अच्छी तरह संभालता है, और Python interoperability भी अच्छी है
      https://github.com/holoviz/datashader Python ecosystem में एक अच्छा विकल्प है
    • https://www.pyqtgraph.org/
  • ggplot2 data exploration के लिए बेहतरीन है। एक समय यह R की बेजोड़ ताकत थी
    dashboards के लिए मुझे Apache ECharts ज़्यादा पसंद है:
    https://github.com/ecomfe/awesome-echarts

  • वाकई शानदार। क्या यह Python में ggplot2 का reimplementation है? pygg एक हल्की library है जो Python की ggplot grammar को R ggplot2 code में translate करती है
    कमी यह है कि यह interactive नहीं है और R में चलती है; फ़ायदा यह है कि यह Hadley के R ggplot implementation को चलाती है
    https://github.com/sirrice/pygg

  • मेरी नज़र में सीधे ggplot की नकल करना थोड़ा निराशाजनक है। ggplot visualization library design का अंतिम जवाब नहीं है
    उदाहरण के लिए ggplot में scale की concept है, जो ठीक-ठीक function के बराबर है। यह library में बस बेकार का conceptual baggage जोड़ती है। इसे हटाना एक आसान improvement है

    • ggplot में जो भी कमियाँ हों, matplotlib, base R, या किसी दूसरी plotting library ने मुझे मेरी typing speed के करीब plots बनाने नहीं दिए। ggplot में यह बिना खास मदद के हो जाता है
      matplotlib में उसके करीब पहुँचने के लिए मुझे हाल में उसे काफ़ी इस्तेमाल करना पड़ा और GitHub Copilot तक चाहिए था
    • scale ठीक-ठीक function नहीं है। axes और legends draw करने के लिए inverse function भी चाहिए होता है। और वास्तव में scale की complexity का ज़्यादातर हिस्सा axes और legends से आता है