Creating beautiful charts with JRuby and JFreeChart

(blog.headius.com)

63 points | by headius 2 days ago ago

23 comments

  • tasuki 17 hours ago

    Wow, the first chart on that web page is really, really ugly. It has these weird 3-d effects that look like from 2001. All it's missing are reflections...

    • ajnin 15 hours ago

      A real throwback, I remember using JFreeChart back in 2006 or so. Looks like the design hasn't changed a bit since then. That's thanks to Java's backwards compatibility ethos I suppose ...

    • omneity 17 hours ago

      I read your comment first and was like it can’t be that bad. I then opened the page, scrolled frantically down and boy oh boy were you right.

      • specproc 16 hours ago

        Title needs a correction: Hideous charts with JRuby and JFreeChart.

  • nritchie 14 hours ago

    Being able to add an interpreted script engine to a Java application is a super-power for some uses. I embedded a Jython (Python in the JVM) command line into a Java Swing app to provide a level of flexibility that I never could with a GUI. Every time I look at JRuby I wonder if Jython was the right choice. It is too late now but JRuby looks awfully nice.

    • CopyOnWrite 5 hours ago

      IMHO it is one of the big tragedies of modern IT history, that JavaScript and Python 'own' the market for scripting languages in the mainstream.

      From a pure technical perspective, I would guess JRuby or one of the JavaScript implementations would have been a better choice for scripting, especially given the poor state of Jython.

      From a pragmatic perspective and what your users are mostly able to figure out, Python might have been the best choice. I even saw software developers with years of experience in imperative languages struggling to understand Rubys blocks...

      Out of pure interest: What was the purpose of the Java application and which aspects did you allow the users of the application to script with Jython?

  • brightball 17 hours ago

    That’s really impressive! Not the chart itself, but seeing how easy it is to use any existing Java library from within a Ruby codebase is super cool.

    Ruby already has a pretty incredible gem ecosystem but having all things Java available too really adds tremendous utility.

    Love JRuby. Thanks for all of the hard work headius!

  • npongratz 18 hours ago

    > Everyone loves pie!

    Oh gosh, no! Count me among those who greatly dislike pie charts in almost every context.

    "Almost never use a pie chart for data"

    https://theconversation.com/heres-why-you-should-almost-neve...

    https://news.ycombinator.com/item?id=38912534

    • tmoertel 15 hours ago

      In early 1990s I worked at a mid-sized software company making software to help big businesses do big-business stuff. One day, another programmer pops into my cube and says:

      "Hey, how do you draw a 3d pie chart?"

      "What?" I asked. "Why?"

      "Well, Excel can do them. And somebody saw one. Now they want our software to draw them."

      "Are you serious?"

      "Yes, I need it like now. I'm supposed to demo it later today."

      So I get out a sheet of paper, draw some triangles, and work out that projection math. He walks away with the paper. Half an hour later, he calls me over.

      "Hey, it's a 3d pie chart!"

      And there it was: On a screen I was all too familiar with, where the 2d pie chart used to be, was a squat 3d pie chart, looking like it was a fat inch thick. Of course, there was too much margin above and below, because of the flatter aspect ratio, but hey, it was 3d and it was good enough for a demo.

      I think that was the first day I realized that programming can be used for evil.

    • hinkley 11 hours ago

      3d pie charts are literally the devil.

      It's 3d pie charts, dot charts, pie charts, and any chart that has the origin set to greater than 0 in descending order of evilness.

      We need a ## anniversary edition of Lying with Statistics.

      • sokoloff 5 hours ago

        If your uptime (or your percentage score in a class) is best understood/consumed on a chart with an origin of zero, you’re having a very bad time.

  • rorylaitila 4 hours ago

    JFreeChart is quite the throwback! Modern JavaScript chart libraries are much better for our users however. On the JVM, I've been successful running JS with GraalJS for the backend. We run GraalJS for https://docs.chartsql.com/ with the output being Apache ECharts (https://echarts.apache.org/en/index.html) for the browser. ECharts can generate SVG server side also, though I haven't tested it in production.

  • sabslikesobs 8 hours ago

    Very cool. I'm one of the few (it seems) who likes these styles of chart, so that was a nice surprise.

    I love Ruby, and one of my few qualms about using it is that it doesn't really have any cross-platform GUI libraries. Someday I'll try building one in JRuby...

  • gitroom 13 hours ago

    tbh those old 3d charts just crack me up - i remember seeing stuff like that in early office programs. you ever feel like some trends just stick around for way too long even when better stuff exists?

  • codr7 14 hours ago

    One word, Tufte; read them all, then read them again.

  • headius 2 days ago

    Why use C, Python, or JavaScript to generate charts for your Ruby applications? Use JRuby and it's so much easier!

    • mberning 17 hours ago

      Thank you for all your work on JRuby. I love it.

      • headius 13 hours ago

        I'm glad you find it useful!

  • knowitnone 17 hours ago

    article complains about a ruby gem(Charty) calling a python library(matplotlib) yet author is running Ruby in Java so they can access some Java library!

    • vidarh 17 hours ago

      I don't even like Java/JVM, and I still think that is more reasonable than running a gem that embeds Python.

    • brightball 16 hours ago

      The Ruby code is already running on the JVM so utilizing the library isn’t calling out to another runtime to execute like you normally would have to in order to do something like this.

    • fiddlerwoaroof 14 hours ago

      The whole point of the JVM is that languages don’t need to be limited to the low-level types C FFI forces you into.

  • dismalaf 17 hours ago

    https://github.com/ruby-numo/numo-gnuplot

    There's always good 'ol Gnuplot and it's many wrappers... This one looks nice.