8 ms·
Creating beautiful charts with JRuby and JFreeChart
- headius 1y agoWhy use C, Python, or JavaScript to generate charts for your Ruby applications? Use JRuby and it's so much easier!
- npongratz 1y 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-never-use-a-pie-chart-for-your-data-214576 https://theconversation.com/heres-why-you-should-almost-neve... https://news.ycombinator.com/item?id=38912534 https://news.ycombinator.com/item?id=38912534
- tmoertel 1y agoIn 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 1y ago3d 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 1y agoIf 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.
- bmm6o 1y agoWhat you should really track and chart is your downtime.
- hinkley 1y agoIf you’re comparing your uptime before and after a fix, you’re lying to everyone by not showing the origin. Also why are people looking at uptime unless there was an outage? At which point you do need to show zero anyway.
- knowitnone 1y agoarticle 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 1y agoI don't even like Java/JVM, and I still think that is more reasonable than running a gem that embeds Python.
- brightball 1y agoThe 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 1y agoThe 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 1y agohttps://github.com/ruby-numo/numo-gnuplot https://github.com/ruby-numo/numo-gnuplot There's always good 'ol Gnuplot and it's many wrappers... This one looks nice.
- tasuki 1y agoWow, 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...
- omneity 1y agoI 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 1y agoTitle needs a correction: Hideous charts with JRuby and JFreeChart.
- ajnin 1y agoA 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 ...
- brightball 1y agoThat’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!
- nritchie 1y agoBeing 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 1y agoIMHO 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?
- codr7 1y agoOne word, Tufte; read them all, then read them again.
- gitroom 1y agotbh 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?
- sabslikesobs 1y agoVery 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...
- rorylaitila 1y agoJFreeChart 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/ https://docs.chartsql.com/ with the output being Apache ECharts (https://echarts.apache.org/en/index.html 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.