Advice needed on Scientific Graph creation- what libraries to pick, etc
I apologize if I am posting this in the wrong place, but as I am a beginner in Java and this is a general question, I figured this might be a good place to start. My coding experience is mainly in C++, but this project might end up being in Java.
For my work, I need to develop a program that will generate some non-standard graphs, and I have been looking up a number of Java libraries to see if any of them include the features I need. I'm suspicous that some of the features I need to build won't be found in a Java library that is already built, so I would have to extend a library that I found.
The first type of graph I will need to generate is a representation of the crust (really just the sedimentary basin) of the earth showing the thicknesses of different rock layers over longer time periods. I'm envisioning this looking something like a stacked line graph, where the lines represent the boundaries of the different rock layers, the x-axis is on the top representing time, and the y-axis is on one side representing depth. Some of the lines would need to terminate in the middle of the graph, since rock layers can appear and disappear over time. The rock layers themselves (the areas between the lines) need to be fillable with some color of texture to increase readability.
I'd like to have on the right-hand side of the graph a separate section that represents the rock sections at the current day, kind of like a stacked bar graph (with just one bar, and each layer being a different rock layer). However, it needs to have the same depth scale as the main graph in order to allow for easy comparison. I'd also like to be able to put the names of different rock layers next to each section.
I would also like a special scale at the top of the graph that indicates the different geologic ages by name so that it can be clear in what age certain rock formations came into being or disappeared. This could be as simple as a series of connected boxes, with the names of the ages in the center of them and the boundaries of the boxes indicating age boundaries.
A couple of other features that I would like are these:
- clickable rock layers (that is, I can click on a rock layer and have some dialog box pop up that allows editting of certain parts of the display of that rock layer, or other features of the rock layer)
- user-editable axes (scale, colors, etc)
- clickable rock layer boundaries
- user-editable tables overlaid on top of the graph
- parts of lines replacable by boxes
- all aspects of the color of the graph editable
So here are my questions: What Java code libraries could I use to help me in the process of accomplishing the above? If I use a code library that doesn't do all the things I want to do as specified above, do you think it would be easy to extend that library to do the things I'd like? The second question is more important to me than the first one.
As you can see, I don't know much about Java as a language and how the graphics libraries (such as Swing?) would work.
Thanks a bunch!