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...
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 ...
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.
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?
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.
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.
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...
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?
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!
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.
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...
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 ...
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.
Title needs a correction: Hideous charts with JRuby and JFreeChart.
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.
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?
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!
> 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
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.
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.
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.
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.
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...
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?
One word, Tufte; read them all, then read them again.
Why use C, Python, or JavaScript to generate charts for your Ruby applications? Use JRuby and it's so much easier!
Thank you for all your work on JRuby. I love it.
I'm glad you find it useful!
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!
I don't even like Java/JVM, and I still think that is more reasonable than running a gem that embeds Python.
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.
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.
https://github.com/ruby-numo/numo-gnuplot
There's always good 'ol Gnuplot and it's many wrappers... This one looks nice.