plot - JFreechart Polar Chart shape annotation -


i trying color different region of polar chart different colors. e.g coloring region between angle 20 , 60 , between radii 2 , 4. how can this? thinking of using shape annotation , there drawing arc, seems there no shape annotation polar plots. ideas? thank you

import java.awt.color; import java.awt.dimension; import java.util.arraylist; import java.util.list; import javax.swing.jframe; import org.jfree.chart.chartpanel; import org.jfree.chart.jfreechart; import org.jfree.chart.axis.numberaxis; import org.jfree.chart.axis.numbertick; import org.jfree.chart.axis.valueaxis; import org.jfree.chart.plot.polarplot; import org.jfree.chart.renderer.defaultpolaritemrenderer; import org.jfree.chart.renderer.polaritemrenderer; import org.jfree.data.xy.xydataset; import org.jfree.data.xy.xyseries; import org.jfree.data.xy.xyseriescollection; import org.jfree.ui.textanchor;  public class test2 extends jframe {      private static final string title = "archimedes' spiral";      public test2(string title) {         super(title);         jfreechart chart = createchart(createdataset());         chartpanel panel = new chartpanel(chart);         panel.setpreferredsize(new dimension(500, 500));         panel.setmousezoomable(false);         this.add(panel);     }      private static xydataset createdataset() {         xyseriescollection result = new xyseriescollection();         xyseries series = new xyseries(title);         xyseries ser = new xyseries("test");         (int t = 0; t <= 1 * 360; t++) {             series.add(90 - t, t);         }          (int t = 0; t <= 1 * 120; t++) {             ser.add(90 - t, 40);             ser.add(90 - t, 120);         }         result.addseries(series);         result.addseries(ser);         return result;     }      private static jfreechart createchart(xydataset dataset) {         valueaxis radiusaxis = new numberaxis();         radiusaxis.setticklabelsvisible(false);         polaritemrenderer renderer = new defaultpolaritemrenderer();         polarplot plot = new polarplot(dataset, radiusaxis, renderer) {              @override             protected list refreshangleticks() {                 list<numbertick> ticks = new arraylist<numbertick>();                 int delta = (int) this.getangletickunit().getsize();                 (int t = 0; t < 360; t += delta) {                     int tp = (360 + 90 - t) % 360;                     numbertick tick = new numbertick(                         double.valueof(t), string.valueof(tp),                         textanchor.center, textanchor.center, 0.0);                     ticks.add(tick);                 }                 return ticks;             }         };         plot.setbackgroundpaint(new color(0x00f0f0f0));         plot.setradiusgridlinepaint(color.gray);         plot.addcornertextitem("r(θ) = θ; 0 < θ < 6π");         defaultpolaritemrenderer ren = new defaultpolaritemrenderer();         ren.setseriesfilled(0, true);         ren.setseriesfilled(1, true);         plot.setrenderer(ren);         jfreechart chart = new jfreechart(             title, jfreechart.default_title_font, plot, true);         chart.setbackgroundpaint(color.white);         return chart;     }      public static void main(string[] args) {         test2 demo = new test2(title);         demo.setdefaultcloseoperation(jframe.exit_on_close);         demo.pack();         demo.setlocationrelativeto(null);         demo.setvisible(true);     } } 

the defaultpolaritemrenderer typically used in polarplot has method setseriesfilled(), controls whether series filled. renderer specifies alphacomposite.src_over mode value of 50%, overlapping fills nice.

addendum: create chart seen below, start example , reduce data set's domain 6π 2π in createdataset():

for (int t = 0; t <= 1 * 360; t++) { ... 

then make series filled in createchart():

... defaultpolaritemrenderer renderer = new defaultpolaritemrenderer(); renderer.setseriesfilled(0, true); ... 

enter image description here


Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -