XyShapeRenderer - Remove outline stroke from legend (items)

A discussion forum for JFreeChart (a 2D chart library for the Java platform).
Locked
datobalu
Posts: 3
Joined: Wed Apr 06, 2016 10:07 am
antibot: No, of course not.

XyShapeRenderer - Remove outline stroke from legend (items)

Post by datobalu » Wed Apr 27, 2016 3:30 pm

Hi,

I am having trouble with the Legend items of XYPlot. By default the legend items (which I made into circles) have grey outline strokes. I need to remove those strokes and fill the circles with native color. I tried accessing legend items through shapeRenderer.getLegendItem(), but I failed to reach my goal.

Here is my code (sorry for huge import list, I use them in later parts of the code).

Code: Select all



import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.geom.Ellipse2D;
import java.awt.Polygon;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.Legend;
import org.jfree.chart.StandardLegend;
import org.jfree.chart.annotations.XYShapeAnnotation;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import java.awt.Color;
import org.jfree.data.Range;
import org.jfree.chart.annotations.XYTextAnnotation;
import org.jfree.chart.renderer.xy.*;


double xMax = chart.getXYPlot().getDomainAxis().getRange().getUpperBound();
double yMax = chart.getXYPlot().getRangeAxis().getRange().getUpperBound();
String[] cols = {"0x008542","0x019086","0x0190ee","0x0325A8","0x5506BA","0xAE07C5","0xD10994","0xE30D16","0xEF660F","0xF49B11"};

chart.getXYPlot().getDomainAxis().setRange(0.00,xMax);

XYShapeRenderer shapeRenderer = new XYShapeRenderer();
shapeRenderer.setBaseShape(new Ellipse2D.Double(1,1,7,7),false);	//circles for data-points
shapeRenderer.setBaseLegendShape(new Ellipse2D.Double(1,1,7,7));	//circles for Legend

int datacount = chart.getPlot().getDataset().getSeriesCount();
int colidx;
Color tmp;
////////////////////////////

	for (int i = 0; i < datacount; i++) 
	{ 
		if(datacount <= cols.length) {
			colidx = i * (int) (cols.length / datacount);
		} else {
			colidx = i % cols.length;
		}
		tmp = Color.decode(cols[colidx]);
		shapeRenderer.setSeriesPaint(i, new Color(tmp.getRed(),tmp.getGreen(),tmp.getBlue(),160)); //last component is alpha-transparency (for overlapping points)
	}

//LAST STEP!
chart.getXYPlot().setRenderer(shapeRenderer);
 
	/* //dotRenderer
	XYDotRenderer dotRenderer = new XYDotRenderer();
	dotRenderer.setDotHeight(7);
	dotRenderer.setDotWidth(7);
    dotRenderer.setSeriesPaint(0, Color.red);
    dotRenderer.setSeriesPaint(1, Color.green);
    dotRenderer.setSeriesPaint(2, Color.orange);
    dotRenderer.setSeriesPaint(3, Color.blue);
	dotRenderer.setLegendShape(new Ellipse2D.Double(1,1,7,7));
	chart.getXYPlot().setRenderer(dotRenderer);	*/


david.gilbert
JFreeChart Project Leader
Posts: 11734
Joined: Fri Mar 14, 2003 10:29 am
antibot: No, of course not.
Contact:

Re: XyShapeRenderer - Remove outline stroke from legend (ite

Post by david.gilbert » Wed Apr 27, 2016 8:47 pm

One solution would be to call setSeriesOutlinePaint(seriesIndex, new Color(0, 0, 0, 0)) which will make the outline transparent.
David Gilbert
JFreeChart Project Leader

:idea: Read my blog
:idea: Support JFree via the Github sponsorship program

datobalu
Posts: 3
Joined: Wed Apr 06, 2016 10:07 am
antibot: No, of course not.

Re: XyShapeRenderer - Remove outline stroke from legend (ite

Post by datobalu » Thu Apr 28, 2016 10:18 am

Thank you David. It Worked!
This was the best present for my birthday today.

david.gilbert
JFreeChart Project Leader
Posts: 11734
Joined: Fri Mar 14, 2003 10:29 am
antibot: No, of course not.
Contact:

Re: XyShapeRenderer - Remove outline stroke from legend (ite

Post by david.gilbert » Thu Apr 28, 2016 11:21 am

Great! Happy birthday :-)
David Gilbert
JFreeChart Project Leader

:idea: Read my blog
:idea: Support JFree via the Github sponsorship program

Locked