0
其實我已經創建了一個x軸和兩個y軸的曲線圖。問題是,當我繪製與Y軸相同的一組數據的圖形不會重疊。我的意思是說,如果我繪製使用左側y軸和x軸用值作爲X(1,2,3,4,5)和y(10,20,30,40,50)的曲線圖它沿着x和y軸繪製一張圖。類似地,當我繪製使用右側y軸和x軸具有相同相同值的曲線圖,則代替重疊它繪製在不同地方的曲線圖。爲什麼會這樣。我已發送屏幕截圖和我用於繪製此圖的代碼。如果有人知道請建議我....數據在圖形設定顯示不正確
代碼繪製圖形
public class ChartEngineActivity extends Activity
{
private GraphicalView mChartView;
private XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(2);
private XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.chart_activity);
List<double[]> x = new ArrayList<double[]>();
x.add(new double[] {1, 2, 3, 4, 5});
List<double[]> values = new ArrayList<double[]>();
values.add(new double[] {10, 20, 30, 40, 50});
int[] colors = new int[] { Color.BLUE,Color.YELLOW};
PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE, PointStyle.DIAMOND};
renderer = new XYMultipleSeriesRenderer(2);
setRenderer(renderer, colors, styles);
int length = renderer.getSeriesRendererCount();
for (int i = 0; i < length; i++)
{
((XYSeriesRenderer) renderer.getSeriesRendererAt(i)).setFillPoints(true);
}
renderer.setChartTitle("Weight/Temperature");
renderer.setXLabels(12);
renderer.setXTitle("Month");
renderer.setXAxisMin(1);
renderer.setXAxisMax(12);
renderer.setXLabelsAlign(Align.CENTER);
renderer.setYLabels(12);
renderer.setYTitle("Weight", 0);
renderer.setYTitle("Temperature", 1);
renderer.setYAxisMin(10, 0);
renderer.setYAxisMax(60,0);
renderer.setYAxisMin(10, 1);
renderer.setYAxisMax(60,1);
renderer.setYAxisAlign(Align.LEFT, 0);
renderer.setYAxisAlign(Align.RIGHT, 1);
renderer.setYLabelsAlign(Align.LEFT, 0);
renderer.setYLabelsAlign(Align.RIGHT, 1);
renderer.setAxesColor(Color.LTGRAY);
renderer.setLabelsColor(Color.LTGRAY);
renderer.setShowGrid(true);
renderer.setGridColor(Color.GRAY);
renderer.setZoomButtonsVisible(true);
renderer.setPanLimits(new double[] { 0, 12, 0, 12 });
dataset = buildDataset(new String[] {"Body Weight"}, x, values);
values.clear();
values.add(new double[] {10, 20, 30, 40, 50});
addXYSeries(dataset, new String[] {"Body Temperature"}, x, values, 1);
}
protected void setRenderer(XYMultipleSeriesRenderer renderer, int[] colors, PointStyle[] styles)
{
renderer.setAxisTitleTextSize(16);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setPointSize(5f);
renderer.setMargins(new int[] { 20, 30, 15, 20 });
int length = colors.length;
for (int i = 0; i < length; i++)
{
XYSeriesRenderer r = new XYSeriesRenderer();
r.setColor(colors[i]);
r.setPointStyle(styles[i]);
renderer.addSeriesRenderer(r);
}
}
protected XYMultipleSeriesDataset buildDataset(String[] titles, List<double[]> xValues,
List<double[]> yValues)
{
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
addXYSeries(dataset, titles, xValues, yValues, 0);
return dataset;
}
public void addXYSeries(XYMultipleSeriesDataset dataset, String[] titles, List<double[]> xValues,
List<double[]> yValues, int scale)
{
int length = titles.length;
for (int i = 0; i < length; i++)
{
XYSeries series = new XYSeries(titles[i], scale);
double[] xV = xValues.get(i);
double[] yV = yValues.get(i);
int seriesLength = xV.length;
for (int k = 0; k < seriesLength; k++)
{
series.add(xV[k], yV[k]);
}
dataset.addSeries(series);
}
}
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
Intent intentNotes = new Intent(this, MainActivity.class);
this.startActivity(intentNotes);
finish();
}
@Override
protected void onResume()
{
super.onResume();
if (mChartView == null)
{
LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
mChartView = ChartFactory.getLineChartView(this, dataset, renderer);
renderer.setClickEnabled(true);
renderer.setSelectableBuffer(100);
mChartView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mChartView.getCurrentSeriesAndPoint();
}
});
layout.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
}
else
{
mChartView.repaint();
}
}
}
爲這就是圖截屏的出現
沒有演示,它不工作我的代碼。你有沒有選擇我可以在不使用achartengine的情況下構建同一個圖的選項。 – AndroidDev 2012-02-27 05:16:12
重量和溫度是否會遵循相同的值(它們會像現在這樣匹配)? – RasTheDestroyer 2012-02-27 09:10:09
葉他們遵循相同的值 – AndroidDev 2012-02-27 09:15:59