Java 如果每个条形图的颜色不同,包含不同的值,如何使用Achartengine在条形图中创建条形图之间的间距
我在条形图中显示了4个值,每个条形图的颜色不同。当我显示图形时,每个条形图相互重叠。我想在我尝试使用的Java 如果每个条形图的颜色不同,包含不同的值,如何使用Achartengine在条形图中创建条形图之间的间距,java,android,bar-chart,achartengine,Java,Android,Bar Chart,Achartengine,我在条形图中显示了4个值,每个条形图的颜色不同。当我显示图形时,每个条形图相互重叠。我想在我尝试使用的setbarspace()条之间留出空间,方法是放置不同的值,但它仍然不起作用。还有其他想法吗 package com.example.barchartview; import org.achartengine.ChartFactory; import org.achartengine.GraphicalView; import org.achartengine.chart.BarChart.
setbarspace()
条之间留出空间,方法是放置不同的值,但它仍然不起作用。还有其他想法吗
package com.example.barchartview;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.BarChart.Type;
import org.achartengine.model.CategorySeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Color;
import android.view.View;
import android.widget.LinearLayout;
@SuppressLint("ParserError")
public class MainActivity extends Activity {
private GraphicalView BarChartView;
@SuppressLint("ParserError")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (BarChartView==null )
{
XYMultipleSeriesRenderer renderer = buildBarRenderer();
setChartSettings(renderer);
BarChartView = ChartFactory.getBarChartView(this, getBarDataset(), renderer, Type.DEFAULT);
LinearLayout playout = (LinearLayout) findViewById(R.id.graph2);
playout.addView(BarChartView);
;
}
else
{
BarChartView.repaint();
BarChartView.setVisibility(View.GONE);
}
}
private void setChartSettings(XYMultipleSeriesRenderer renderer)
{
renderer.setYTitle("Hits");
renderer.setXAxisMin(0);
renderer.setXAxisMax(7);
renderer.setYAxisMin(0);
renderer.setYAxisMax(900);
}
private XYMultipleSeriesDataset getBarDataset()
{
int[] y = {624,430,712,323};
CategorySeries series1 = new CategorySeries("A");
CategorySeries series2 = new CategorySeries("B");
CategorySeries series3 = new CategorySeries("C");
CategorySeries series4 = new CategorySeries("D");
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
series1.add(y[0]);
dataset.addSeries(series1.toXYSeries());
series2.add(y[1]);
dataset.addSeries(series2.toXYSeries());
series3.add(y[2]);
dataset.addSeries(series3.toXYSeries());
series4.add(y[3]);
dataset.addSeries(series4.toXYSeries());
return dataset;
}
protected XYMultipleSeriesRenderer buildBarRenderer() {
XYMultipleSeriesRenderer mrenderer = new XYMultipleSeriesRenderer();
double[] range = {0,5,0,5};
mrenderer.setAxisTitleTextSize(16);
mrenderer.setChartTitleTextSize(20);
mrenderer.setLabelsTextSize(15);
mrenderer.setLegendTextSize(15);
mrenderer.setBarSpacing(0);
mrenderer.setXLabels(1);
mrenderer.addXTextLabel(2.5, "");
mrenderer.setMargins(new int[] {20, 30, 15, 0});
mrenderer.setAxesColor(Color.WHITE);
mrenderer.setChartTitle("");
mrenderer.setXTitle("");
mrenderer.setInitialRange(range, 1);
XYSeriesRenderer renderer1 = new XYSeriesRenderer();
renderer1.setColor(Color.GREEN);
XYSeriesRenderer renderer2 = new XYSeriesRenderer();
renderer2.setColor(Color.RED);
XYSeriesRenderer renderer3 = new XYSeriesRenderer();
renderer3.setColor(Color.BLUE);
XYSeriesRenderer renderer4 = new XYSeriesRenderer();
renderer4.setColor(Color.CYAN);
mrenderer.addSeriesRenderer(renderer1);
mrenderer.addSeriesRenderer(renderer2);
mrenderer.addSeriesRenderer(renderer3);
mrenderer.addSeriesRenderer(renderer4);
return mrenderer;
}
}
这是我的密码
这是我的activity_main.xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainActivity"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout android:id="@+id/graph2"
android:layout_width="160dip"
android:layout_height="200dip"
android:scaleType="fitEnd"
android:layout_marginTop="40dip"
android:layout_marginLeft="790dip"/>
</RelativeLayout>
我将您的所有系列更改为
XYSeries
,并将它们简单地添加到数据集,而不调用额外的方法
XYSeries series1 = new XYSeries("A");
dataset.addSeries(series1);
然后,在常规XYChart中添加如下数据:
series1.add(1, value);
series2.add(2, value);
嗯,更改setbarspace()
会在演示应用程序中产生明显的不同,特别是SalesStackedBarChart.java
。发布你的代码,这样我们就可以看到哪里出了问题。是的,我已经发布了我的代码,请检查一下,谢谢!!!!您两次调用了很多方法,包括setbarspace()
。您更改的是第一个还是第二个setbarspace()
?(你应该删除重复调用,因为它们什么都不做。)第一个(删除了第二个setbarspace())我已经编辑了代码,但效果仍然相同。setbarspace()
方法在不同索引的条之间添加了一个缓冲区,所有四个条都在同一索引上。您可以切换到仅使用一个渲染器和数据集:,所有条都具有相同的颜色。我不知道如何在同一索引上增加条间距。你能帮我吗?这是我的问题