I have a problem with fill out side in linechart below. Here is a demo that i have draw. How can i remove the area in red block.
XYSeriesRenderer renderer = new XYSeriesRenderer();
renderers.addSeriesRenderer(renderer);
renderer.setLineWidth(2f);
renderer.setPointStrokeWidth(7f);
renderer.setPointStyle(PointStyle.CIRCLE);
FillOutsideLine below = new FillOutsideLine(FillOutsideLine.Type.BELOW);
renderer.addFillOutsideLine(below);
Related
I m using AChartEngine for generating scatter chart. I m currently using XYMultipleSeriesRenderer for rendering two scatter charts in a single graph view. How can i set different point size for each of the scatter charts
final XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
.
.
renderer.setPointSize(5.5f); // this changes point size for all scatter charts
// Scatter chart1
XYSeriesRenderer r1 = new XYSeriesRenderer();
r1.setColor(Color.BLACK);
r1.setPointStyle(PointStyle.CIRCLE);
r1.setFillPoints(true);
renderer.addSeriesRenderer(r1);
// Scatter chart2
XYSeriesRenderer r2 = new XYSeriesRenderer();
r2.setColor(Color.YELLOW);
r2.setPointStyle(PointStyle.CIRCLE);
r2.setFillPoints(true);
renderer.addSeriesRenderer(r2);
I want both the scatter charts to have different radii for the points. Any help will be appreciated. Thank you
You can use
mRenderer.setPointSize(20);
where
private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
hello guys i'm trying to write a simple line graph but it does not render the last value on the lines. I want to show all the values on the linegraph.
http://imgur.com/EHFh1xP
http://imgur.com/CWl8CDi
the code is tried is
XYSeriesRenderer rendererLijn0 = new XYSeriesRenderer();
rendererLijn0.setColor(Color.RED);
rendererLijn0.setChartValuesTextSize(rendererLijn0.getChartValuesTextSize()+20);
rendererLijn0.setDisplayChartValues(true);
rendererLijn0.setPointStyle(PointStyle.CIRCLE);
rendererLijn0.setFillPoints(true);
rendererLijn0.setDisplayBoundingPoints(true);
XYSeriesRenderer rendererLijn1 = new XYSeriesRenderer();
rendererLijn1.setDisplayChartValues(true);
rendererLijn1.setPointStyle(PointStyle.CIRCLE);
rendererLijn1.setFillPoints(true);
rendererLijn1.setDisplayBoundingPoints(true);
AlleSeries.addSeries(GrafiekDataLijn0);
AlleSeries.addSeries(GrafiekDataLijn1);
AlleRenderers.addSeriesRenderer(rendererLijn0);
AlleRenderers.addSeriesRenderer(rendererLijn1);
AlleRenderers.setXTitle("Tijden");
AlleRenderers.setYTitle("Waarde Lijnen");
AlleRenderers.setYAxisMin(0);
AlleRenderers.setYAxisMax((hoogste + 20));
AlleRenderers.setZoomEnabled(true);
AlleRenderers.setZoomButtonsVisible(true);
AlleRenderers.setXLabelsAlign(Align.CENTER);
AlleRenderers.setXAxisMin(0-0.2);
AlleRenderers.setXAxisMax(GrafiekDataLijn1.getItemCount());
GraphicalView Grafiek = ChartFactory.getLineChartView(
getBaseContext(), AlleSeries, AlleRenderers);
lnGrafiek.addView(Grafiek);
Try giving some padding to your view:
Grafiek.setPadding(0,0,20,0);//(left, top, right, bottom);
Can we use a gradient style for FillOutsideLine of achartlibrary to color the below side of the line ?
so far I managed to use simple Color.argb(), but I can't use any xml to make it gradient or it will crash
can we fix this issue ?
code:
FillOutsideLine fill = new FillOutsideLine(FillOutsideLine.Type.BOUNDS_ALL);
fill.setColor(Color.argb(55, 62, 117, 163));
renderer.addFillOutsideLine(fill);
Well, it's bit tricky, but you can set FillOutsideLine ABOVE with your background color, make chart background transparent, and add gradient background to GraphicalView.
Upd
I'm using Xamarin for now, that's why C#. Anyway, hope it helps :)
XYSeriesRenderer renderer = new XYSeriesRenderer();
...
//Set up fill
XYSeriesRenderer.FillOutsideLine fill = new XYSeriesRenderer.FillOutsideLine(XYSeriesRenderer.FillOutsideLine.FillOutsideLineBehaviorType.Above);
fill.Color = Color.White.ToAndroid();
renderer.AddFillOutsideLine(fill);
XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
mRenderer.AddSeriesRenderer(renderer);
//Set chart background
mRenderer.BackgroundColor = Color.Transparent.ToAndroid();
...
chartView = ChartFactory.GetLineChartView(Forms.Context, dataset, mRenderer);
//Set gradient background
chartView.SetBackgroundResource(Droid.Resource.Drawable.chart_gradient);
I am using achartengine, to plot a line graph. I am trying to customize it to have Y axis lines which pass through the values, and show the values on top. Does any one have any idea, how can I achieve an effect like this one :
Here is what I currently have :
And here is the code Snippet :
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
dataset.addSeries(series);
XYSeriesRenderer renderer = new XYSeriesRenderer();
renderer.setPointStyle(PointStyle.CIRCLE);
renderer.setFillPoints(true);
renderer.setColor(Color.WHITE);
renderer.setLineWidth(2f);
XYMultipleSeriesRenderer seriesRenderer = new XYMultipleSeriesRenderer();
seriesRenderer.addSeriesRenderer(renderer);
seriesRenderer.setLabelsTextSize(20); // Text size
seriesRenderer.setShowAxes(true); // show both axes
seriesRenderer.setShowLegend(false);
seriesRenderer.setShowGridX(true); // X grid helps identify values
seriesRenderer.setShowLabels(true); // See the values
seriesRenderer.setYLabelsAlign(Align.RIGHT);
seriesRenderer.setZoomButtonsVisible(false); // bye bye zoom
seriesRenderer.setXAxisMin(0);
seriesRenderer.setXAxisMax(10);
seriesRenderer.setTextTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/Lifestyle Rounded M54.ttf"));
seriesRenderer.setPointSize(10f);
seriesRenderer.setPanEnabled(true, false);
View view = ChartFactory.getLineChartView(context, dataset, seriesRenderer);
return view;
Any input will be highly appreciated.
You can add annotation that can be displayed wherever you need on the graph:
series.addAnnotation(text, x, y);
I am using achartengine for showing a single bar chart in my app for a view. I need to increase the width of the bar. This is my code
CategorySeries series = new CategorySeries("Demo Bar Graph");
series.add(65);
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
dataset.addSeries(series.toXYSeries());
XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
mRenderer.setXAxisMin(2);
mRenderer.setXAxisMax(2);
mRenderer.setYAxisMin(0);
mRenderer.setYAxisMax(50);
try Using Below Code
renderer.setBarSpacing(-0.5);