It almost looks like art - but it is data !
from: Fraunhofer ISE: solar / wind / fossil energy generation in Germany per bin of 15 mit to several hours *).
On the Y axis you see the fossil power generation, and on the X axis the split between wind (left) and solar(right).
Via right click - new formula column / Date Time / Day of year
one can add some color - with a cyclic scheme like Hue.
Hue is not available by default, but it's easy to generate:
Color Theme(
{"Hue", {"Continuous", "Categorical", "Chromatic"}, {{248, 10, 254}, {0,
0, 255}, {0, 127, 255}, {0, 255, 255}, {127, 255, 127}, {255, 255, 0},
{255, 127, 0}, {255, 0, 0}, {254, 5, 235}, Missing( {120, 120, 124} )}}
)
And with some transparency added, one can get a feeling for the density of the data points:
The transparency is also applied to the legend, this makes it hard to read.
To fix the issue, just add another column as "color" and use it for the legend ... and hide the original one.
in total:
Graph Builder(
Transform Column( "Day of Year 2", Formula( Day Of Year( :date ) ) ),
Transform Column( "Day of Year", Formula( Day Of Year( :date ) ) ),
Transform Column( "Year", Nominal, Formula( Year( :date ) ) ),
Transform Column(
"fossile ->",
Formula(
Sum( :Braunkohle, :Steinkohle, :Öl, :Kohlegas, :Erdgas ) / :Last // Last = consumption
)
),
Transform Column( "dummy", Formula( . ) ),
Transform Column(
"<- wind / solar ->",
Formula( (:Solar - (:Wind Offshore + :Wind Onshore)) / :Last)
),
Variables(
X( :"<- wind / solar ->"n ),
X( :dummy, Position( 1 ) ),
Y( :"fossile ->"n ),
Wrap( :Year ),
Color( :Day of Year ),
Color( :Day of Year 2 )
),
Elements(
Points( X( 1 ), Y, Legend( 1 ) ),
Points( X( 2 ), Y, Legend( 2 ) )
),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(
1,
Properties(
0,
{Transparency( 0.05 ),
gradient(
{Color Theme(
{"Hue_3", {"Continuous", "Categorical",
"Chromatic"}, {{248, 10, 254}, {0, 0, 255}, {0,
127, 255}, {0, 255, 255}, {127, 255, 127}, {255,
255, 0}, {255, 127, 0}, {255, 0, 0}, {254, 5, 235
}, Missing( {120, 120, 124} )}}
), Scale Values( [0 365] ), N Labels( 2 )}
)},
Item ID( "Day of Year", 1 )
),
), Legend Model(
2,
Properties(
0,
{gradient(
{Color Theme(
{"Hue", {"Continuous", "Categorical",
"Chromatic"}, {{248, 10, 254}, {0, 0, 255}, {0,
127, 255}, {0, 255, 255}, {127, 255, 127}, {255,
255, 0}, {255, 127, 0}, {255, 0, 0}, {254, 5, 235
}, Missing( {120, 120, 124} )}}
), Scale Values( [0 365] ), N Labels( 2 ),
Label Format( "Fixed Dec", 12, 0 )}
)},
Item ID( "Day of Year", 1 )
)
)}
)
)
);
let's add some triangles - now it looks very similar to a Ternary plot.
The only difference:
in a ternary plot, the 3 parts add up to 1.
Here - as we use the total power consumption as a reference, points can be outside of the triangle:
additional energy is exported.
As mentioned in the original post, by adding transparency, one gets an impression for the "densities":
Unfortunately, the time bins of the input data have different length. So, one has to apply some fancy correction.
... or at least: some weighting.
Weighting by Transparency feels like THE natural weight:
data points with lower weight get transparent - i.e. less visible -> lower weight.
Unfortunately, weighting by TRansparency is not et avaialble in JMP - if you are interested, please vote:
Graph Builder:Transparency Dropzone
As a workaround, one can split the continuous weight scale into bins and apply the transparency setting manually:
A disadvantage of this workaround:
The "Color" Dropzone is used to apply the Transparency ( Why is this DropZone called "Color" )
Therefore, the color Dropzone is not available anymore for color : (
If you are not interested in the "seasonal" part, then you can use Color to indicate density.
This can be done via Histogram + Frequency
Make sure that you use rounded values for the frequency - otherwise they get replaced by 1s.
(Freq and Weight: better documentation )