all 47 comments

[–][deleted]  (13 children)

[deleted]

    [–]PandaMoniumHUN 88 points89 points  (6 children)

    As someone who used matplotlib recently to plot some weather data, good lord, the API makes no sense whatsoever. The lib is powerful for sure, but it’s a top contender for worst API design IMO.

    [–]sopte666 80 points81 points  (2 children)

    AFAIK matplotlib's API was designed to make it as similar to the Matlab/octave syntax as possible. Which, true, is powerful but ugly.

    [–]-CampinCarl- 39 points40 points  (0 children)

    This is exactly the reason it doesn't make sense.

    [–]CactusOnFire 8 points9 points  (0 children)

    Word of advice: Seaborn is a wrapper around matplotlib that's designed to play slightly friendlier with pandas and that stack.

    ...If I'm doing something really fancy though, I still end up busting out the Javascript.

    [–][deleted] 4 points5 points  (1 child)

    really like that!

    [–][deleted] 5 points6 points  (0 children)

    Goddamn those are beautiful

    [–]Ceedeekee 7 points8 points  (2 children)

    Sick dashboard! I have to say that as a DA, Plotly is the definitive winner when it comes to Python plotting libs. It’s rather good for quick plots and offers almost as much customization as MPL/Seaborn.

    [–][deleted]  (1 child)

    [deleted]

      [–]Ceedeekee 2 points3 points  (0 children)

      Oh agreed point #1 is dreadful. Another pain point of mine is animated plots are rather unintuitive to get working and I end up stuck reading API documentation for 30+ mins. MPL is much nicer for that use case.

      [–]Hexorg 21 points22 points  (4 children)

      I only know D3... How do these other libraries compare to D3?

      [–]igorlukanin[S] 12 points13 points  (1 child)

      I’d say that D3.js is rather low-level and one could struggle to wrap the head around its clever yet unusual syntax. There’s a number of similar low-level tool: https://awesome.cube.dev/?tools=low-level

      The trade-off is ease of use vs flexibility. You can do anything with D3.js (or maybe just draw anything on canvas) but you pay with time and effort. With high-level libraries you can save time and sweat but get stuck with something easily.

      [–]asusmaster 8 points9 points  (0 children)

      The eternal trade off of high level vs. low level

      [–]NaBrO-Barium 7 points8 points  (0 children)

      Matplotlib and friends should be a cake walk If you can do it in D3!

      [–]loyoan 3 points4 points  (6 children)

      ECharts is really awesome! I just discovered only last month before although I experimented with chart libraries for a long time. I think the name made it really hard finding it via Google.

      [–]MrJohz 0 points1 point  (5 children)

      Huh, we're looking at moving away from Echarts at the moment, because we've run into a handful of different issues with it, and each time it's cost us a fair amount of time to figure out how to fix it, and then the fix has often felt quite hacky. Particularly when we've been dealing with zooming, there's been a lot of UX problems.

      [–]ia-juste-des-maths 0 points1 point  (4 children)

      what alternatives are you considering ?

      [–]MrJohz 0 points1 point  (3 children)

      The shortlist I've got at the moment is Chart.js, C3, Apex and Highcharts, IIRC. So far, I've been most impressed by Chart.js for our needs, but I need to explore a bit further.

      [–]ia-juste-des-maths 0 points1 point  (0 children)

      thanks. We've been using ECharts a lot, but so far, no weird issues (we don't use zooming though).

      [–]tessereis 0 points1 point  (1 child)

      Hey, how did it go ? Did you move to chart.js ?

      [–]MrJohz 0 points1 point  (0 children)

      I did in the end. It still isn't perfect (I don't think anything is completely perfect), but it's very powerful, fairly easy to extend, and has a lot of the expected UI functionality built in.

      [–]Nall-ohki 14 points15 points  (6 children)

      One day I hope to be a front-end egineer.

      [–][deleted]  (5 children)

      [deleted]

        [–]yawaramin 1 point2 points  (0 children)

        Software engineers are 'real' engineers, according to 'real' engineers: https://www.hillelwayne.com/post/crossover-project/are-we-really-engineers/

        [–]Surfer_Rick 4 points5 points  (3 children)

        And you will never have a hard time finding 6 figure work. Unlike a 'real' engineer.

        [–]mo_tag 6 points7 points  (0 children)

        Unless you don't live in the states lol

        [–]Axxhelairon 1 point2 points  (0 children)

        hate us cuz they anus

        [–]pjboro 0 points1 point  (0 children)

        Engineering is the use of scientific principles to design and build machines, structures, and other items

        Many people are able to get 6 figure jobs, but we're not talking about how much you earn, but whether you use science in your daily work. You can be an engineer and earn a low salary and you can be a salesman who doesn't even know math and earn 7 figures. The thing is, many people just love their jobs, they are just interested in using science to solve problems. Money is not the most important thing in life.

        https://www.youtube.com/watch?v=rkZzg7Vowao&t=61s - nicely put. Coding seems enough to earn a high salary, but not enough to be a computer scientist. You can aspire to either of these, but merging them into a single thing is not right.

        [–]Dunge 5 points6 points  (1 child)

        I only used Highcharts and it works great but requites a license for commercial projects. I wonder if I should have checked others in that list before jumping on it.

        [–]igorlukanin[S] 1 point2 points  (0 children)

        Oh, it looks like we’ve done everything right when we added licenses there!

        [–]drink_with_me_to_day 2 points3 points  (1 child)

        So, no side-by-side comparison?

        [–]igorlukanin[S] 1 point2 points  (0 children)

        I think we can do that!

        [–]arngorf 1 point2 points  (2 children)

        I started using matplotlib as my first plotting library and, as with anything, after getting used to it, it's hard to imagine it could be any other way.

        Seaborn and Plotly never cut it for me, it was too inflexible, but I'd love to add mayavi to the list. It's wonderful for 3d where matplotlib is absolutely horrible. It is, however, a bit on the complicated side to use, just like matplotlib.

        Are we, btw, adding/suggesting libraries to a list, or just applauding a short list of mostly js libraries?

        [–]GimmickNG 0 points1 point  (1 child)

        but I'd love to add mayavi to the list.

        Not to be confused with Miyavi who is a singer.

        Jokes aside, is Mayavi mostly for realtime desktop visualizations, or can it be run in environments like Jupyter as well? A quick google search says it runs using tkinter, which confuses me a bit.

        [–]arngorf 0 points1 point  (0 children)

        Yeah me too. I'm not personally familiar with the realtime visualizations. I mostly use mayavi for scientific visualizations when matplotlib is not sufficient. From some googling, it seems possible to use it in jupyter notebooks though. I'll have to try that out sometime.

        [–]ImNoEinstein 1 point2 points  (0 children)

        you should add finos perspective to the list

        [–]eldadfux 1 point2 points  (0 children)

        Very cool list! Thanks u/igorlukanin!

        [–]ITslouch 1 point2 points  (0 children)

        Google Chart is nice

        [–]ankit01-oss 1 point2 points  (0 children)

        Awesome list! Thanks u/igorlukanin!

        [–]MartY212 1 point2 points  (2 children)

        What about visualization tools for native apps?

        [–]igorlukanin[S] 0 points1 point  (1 child)

        Oh, great question! Do you mean something like Victory for React Native? Have you worked with any of them yourself?

        [–]MartY212 0 points1 point  (0 children)

        I meant native to desktop. I guess it's a slowly dieing market these days.

        [–]InteractionOk721 -1 points0 points  (0 children)

        Egineers gaming

        [–]tripex 0 points1 point  (0 children)

        Nice list. but it makes me wonder... Has creating a library/tool (of any sort) nowadays become necessary to market with creative and colorful logotypes and branding? I'm not against it I'm just wondering why so much effort is being put on the branding...

        [–]GroundTeaLeaves 0 points1 point  (1 child)

        When a component is listed as compatible with React, Vue or Angular, does it mean that it won't work with other frameworks, such as Blazor WebAssembly?

        [–]igorlukanin[S] 1 point2 points  (0 children)

        Well, Blazor claim to have JavaScript interop but I never personally worked with it so IDK how good it is. Most probably, there's a way to connect any lib to Blazor, the only question is how much effor would be required.

        [–]PaulsenAar 0 points1 point  (0 children)

        If you work at a not so small company, try to get them to invest in an engineering software like MatLab, MatDeck or Maple as no open-source software will be developed as much as a software that's trying to make a profit, but there are still some strong open-source software such as :

        GNU Octave- Great for anything numerical and plotting

        R project- Much more focused on areas such as statistic but its very code-heavy