我正在使用多个Y轴图来绘制点
我有1)X轴2)Y1轴3)Y2轴
a)最初我习惯在Y1轴上绘制5系列线(高度)和Y2轴上相同的5系列线(重量),相对于x轴,,,,这里没有问题,,,这些系列的线是标准线,用于每次计算,
b)现在如果用户同时输入他的身高和体重,我会画两条额外的线,所以有12个系列的线,包括标准线,
c)如果用户单独进入高度而不是权重,则应用程序强制关闭,说数据集和渲染器不应为空且应具有相同数量的系列
code follows,,
public GraphicalView execution(Context context, String UserName,
String HeightRepresentation, String WeightRepresentation,
ArrayList<Double> mHeightValueCms,
ArrayList<Double> mWeightValueKg,
ArrayList<Double> mHeightInCmsMonthDate,
ArrayList<Double> mWeightInKgMonthDate,
ArrayList<Double> mHeightMonth97, ArrayList<Double> mHeightMonth75,
ArrayList<Double> mHeightMonth50, ArrayList<Double> mHeightMonth25,
ArrayList<Double> mHeightMonth3, ArrayList<Double> mWeightMonth97,
ArrayList<Double> mWeightMonth75, ArrayList<Double> mWeightMonth50,
ArrayList<Double> mWeightMonth25, ArrayList<Double> mWeightMonth3) {
XYMultipleSeriesRenderer renderer = null;
String[] titles = new String[] { "97%", "75%", "50%", "25%", "3% " };
List<double[]> x = new ArrayList<double[]>();
List<double[]> x1 = new ArrayList<double[]>();
for (int i = 0; i < titles.length; i++) {
x.add(new double[] { 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36 });
}
List<double[]> values = new ArrayList<double[]>();
values.add(new double[] { mHeightMonth97.get(0), mHeightMonth97.get(1),
mHeightMonth97.get(2), mHeightMonth97.get(3),
mHeightMonth97.get(4), mHeightMonth97.get(5),
mHeightMonth97.get(6), mHeightMonth97.get(7),
mHeightMonth97.get(8), mHeightMonth97.get(9),
mHeightMonth97.get(10), mHeightMonth97.get(11),
mHeightMonth97.get(12) });
values.add(new double[] { mHeightMonth75.get(0), mHeightMonth75.get(1),
mHeightMonth75.get(2), mHeightMonth75.get(3),
mHeightMonth75.get(4), mHeightMonth75.get(5),
mHeightMonth75.get(6), mHeightMonth75.get(7),
mHeightMonth75.get(8), mHeightMonth75.get(9),
mHeightMonth75.get(10), mHeightMonth75.get(11),
mHeightMonth75.get(12) });
values.add(new double[] { mHeightMonth50.get(0), mHeightMonth50.get(1),
mHeightMonth50.get(2), mHeightMonth50.get(3),
mHeightMonth50.get(4), mHeightMonth50.get(5),
mHeightMonth50.get(6), mHeightMonth50.get(7),
mHeightMonth50.get(8), mHeightMonth50.get(9),
mHeightMonth50.get(10), mHeightMonth50.get(11),
mHeightMonth50.get(12) });
values.add(new double[] { mHeightMonth25.get(0), mHeightMonth25.get(1),
mHeightMonth25.get(2), mHeightMonth25.get(3),
mHeightMonth25.get(4), mHeightMonth25.get(5),
mHeightMonth25.get(6), mHeightMonth25.get(7),
mHeightMonth25.get(8), mHeightMonth25.get(9),
mHeightMonth25.get(10), mHeightMonth25.get(11),
mHeightMonth25.get(12) });
values.add(new double[] { mHeightMonth3.get(0), mHeightMonth3.get(1),
mHeightMonth3.get(2), mHeightMonth3.get(3),
mHeightMonth3.get(4), mHeightMonth3.get(5),
mHeightMonth3.get(6), mHeightMonth3.get(7),
mHeightMonth3.get(8), mHeightMonth3.get(9),
mHeightMonth3.get(10), mHeightMonth3.get(11),
mHeightMonth3.get(12) });
int[] colors = null;
PointStyle[] styles = null;
if (!(mWeightInKgMonthDate.isEmpty() && mHeightInCmsMonthDate.isEmpty())) {
renderer = new XYMultipleSeriesRenderer(12);
colors = new int[] {
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
Color.GREEN,
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
Color.RED };
styles = new PointStyle[] { PointStyle.POINT, PointStyle.POINT,
PointStyle.POINT, PointStyle.POINT, PointStyle.POINT,
PointStyle.TRIANGLE, PointStyle.POINT, PointStyle.POINT,
PointStyle.POINT, PointStyle.POINT, PointStyle.POINT,
PointStyle.TRIANGLE };
} else
if (!mWeightInKgMonthDate.isEmpty() && mHeightInCmsMonthDate.isEmpty()) {
renderer = new XYMultipleSeriesRenderer(11);
colors = new int[] {
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
Color.RED };
styles = new PointStyle[] { PointStyle.POINT, PointStyle.POINT,
PointStyle.POINT, PointStyle.POINT, PointStyle.POINT,
PointStyle.POINT, PointStyle.POINT, PointStyle.POINT,
PointStyle.POINT, PointStyle.POINT, PointStyle.TRIANGLE };
} else
if (mWeightInKgMonthDate.isEmpty() && !mHeightInCmsMonthDate.isEmpty()) {
renderer = new XYMultipleSeriesRenderer(11);
colors = new int[] {
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
Color.GREEN,
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed) };
styles = new PointStyle[] { PointStyle.POINT, PointStyle.POINT,
PointStyle.POINT, PointStyle.POINT, PointStyle.POINT,
PointStyle.TRIANGLE, PointStyle.POINT, PointStyle.POINT,
PointStyle.POINT, PointStyle.POINT, PointStyle.POINT };
} else
if (mWeightInKgMonthDate.isEmpty() && mHeightInCmsMonthDate.isEmpty()) {
renderer = new XYMultipleSeriesRenderer(10);
colors = new int[] {
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightGreen),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed),
context.getResources().getColor(R.color.LightRed) };
styles = new PointStyle[] { PointStyle.POINT, PointStyle.POINT,
PointStyle.POINT, PointStyle.POINT, PointStyle.POINT,
PointStyle.POINT, PointStyle.POINT, PointStyle.POINT,
PointStyle.POINT, PointStyle.POINT };
}
setRenderer(renderer, colors, styles);
int length = renderer.getSeriesRendererCount();
for (int i = 0; i < length; i++) {
XYSeriesRenderer r = ((XYSeriesRenderer) renderer
.getSeriesRendererAt(i));
r.setFillPoints(true);
r.setLineWidth(3f);
// /-----
r.setShowLegendItem(false);
}
if(HeightRepresentation.equals("HeightInCms") && WeightRepresentation.equals("WeightInKg")){
setChartSettings(renderer, "Growth Chart For " + UserName, "Month",
"Height in (cms)", 0, 36, 45, 180, Color.LTGRAY, Color.LTGRAY);
renderer.setYTitle("Weight in (kg)", 1);
}else if(HeightRepresentation.equals("HeightInFt") && WeightRepresentation.equals("WeightInKg")){
setChartSettings(renderer, "Growth Chart For " + UserName, "Month",
"Height in (ft)", 0, 36, 0, 8, Color.LTGRAY, Color.LTGRAY);
renderer.setYTitle("Weight in (kg)", 1);
}else if(HeightRepresentation.equals("HeightInCms") && WeightRepresentation.equals("WeightInLbs")){
setChartSettings(renderer, "Growth Chart For " + UserName, "Month",
"Height in (cms)", 0, 36, 45, 180, Color.LTGRAY, Color.LTGRAY);
renderer.setYTitle("Weight in (lbs)", 1);
}else if(HeightRepresentation.equals("HeightInFt") && WeightRepresentation.equals("WeightInLbs")){
setChartSettings(renderer, "Growth Chart For " + UserName, "Month",
"Height in (ft)", 0, 36, 0, 8, Color.LTGRAY, Color.LTGRAY);
renderer.setYTitle("Weight in (lbs)", 1);
}
renderer.setXLabels(12);
renderer.setYLabels(10);
renderer.setShowGrid(true);
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.BLACK);
// renderer.setPointSize(3);
// renderer.setGridColor(Color.WHITE);
renderer.setXLabelsAlign(Align.RIGHT);
renderer.setYLabelsAlign(Align.RIGHT);
renderer.setZoomButtonsVisible(true);
// renderer.setPanLimits(new double[] { -50, 50, 0, 250 });
// renderer.setZoomLimits(new double[] { -50, 50, 0, 250 });
renderer.setZoomRate(1.05f);
renderer.setLabelsColor(Color.WHITE);
renderer.setXLabelsColor(Color.WHITE);
renderer.setYLabelsColor(0, colors[0]);
renderer.setYLabelsColor(1, Color.RED);
renderer.setYAxisAlign(Align.RIGHT, 1);
renderer.setYLabelsAlign(Align.LEFT, 1);
XYMultipleSeriesDataset dataset = null;
if (!mHeightInCmsMonthDate.isEmpty() && !mHeightValueCms.isEmpty()) {
XYSeries SeperateY1 = new XYSeries("");
for (int i = 0; i < mHeightInCmsMonthDate.size(); i++) {
SeperateY1.add(mHeightInCmsMonthDate.get(i),
mHeightValueCms.get(i));
}
dataset = buildDataset(titles, x, values);
dataset.addSeries(SeperateY1);
} else {
dataset = buildDataset(titles, x, values);
}
XYSeries seriesMin1, seriesMin2, seriesMin3, seriesMin4, seriesMin5, seriesMin6, seriesMin7, seriesMin8, seriesMin9, seriesMin10, seriesMin11, seriesMin12;
if (!mHeightInCmsMonthDate.isEmpty()) {
seriesMin1 = dataset.getSeriesAt(0);
seriesMin2 = dataset.getSeriesAt(1);
seriesMin3 = dataset.getSeriesAt(2);
seriesMin4 = dataset.getSeriesAt(3);
seriesMin5 = dataset.getSeriesAt(4);
seriesMin6 = dataset.getSeriesAt(5);
seriesMin1.addAnnotation("3%", 37,
mHeightMonth3.get(mHeightMonth3.size() - 1));
seriesMin2.addAnnotation("25%", 37,
mHeightMonth25.get(mHeightMonth25.size() - 1));
seriesMin3.addAnnotation("50%", 37,
mHeightMonth50.get(mHeightMonth50.size() - 1));
seriesMin4.addAnnotation("75%", 37,
mHeightMonth75.get(mHeightMonth75.size() - 1));
seriesMin5.addAnnotation("97%", 37,
mHeightMonth97.get(mHeightMonth97.size() - 1));
for (int i = 0; i < mHeightInCmsMonthDate.size(); i++) {
seriesMin6.addAnnotation("(" + mHeightInCmsMonthDate.get(i)
+ " , " + mHeightValueCms.get(i) + ")",
mHeightInCmsMonthDate.get(i), mHeightValueCms.get(i));
}
} else {
seriesMin1 = dataset.getSeriesAt(0);
seriesMin2 = dataset.getSeriesAt(1);
seriesMin3 = dataset.getSeriesAt(2);
seriesMin4 = dataset.getSeriesAt(3);
seriesMin5 = dataset.getSeriesAt(4);
seriesMin1.addAnnotation("3%", 37,
mHeightMonth3.get(mHeightMonth3.size() - 1));
seriesMin2.addAnnotation("25%", 37,
mHeightMonth25.get(mHeightMonth25.size() - 1));
seriesMin3.addAnnotation("50%", 37,
mHeightMonth50.get(mHeightMonth50.size() - 1));
seriesMin4.addAnnotation("75%", 37,
mHeightMonth75.get(mHeightMonth75.size() - 1));
seriesMin5.addAnnotation("97%", 37,
mHeightMonth97.get(mHeightMonth97.size() - 1));
}
values.clear();
List<double[]> values1 = new ArrayList<double[]>();
List<double[]> values2 = new ArrayList<double[]>();
List<double[]> values3 = new ArrayList<double[]>();
List<double[]> values4 = new ArrayList<double[]>();
List<double[]> values5 = new ArrayList<double[]>();
List<double[]> values6 = new ArrayList<double[]>();
values1.add(new double[] { mWeightMonth97.get(0),
mWeightMonth97.get(1), mWeightMonth97.get(2),
mWeightMonth97.get(3), mWeightMonth97.get(4),
mWeightMonth97.get(5), mWeightMonth97.get(6),
mWeightMonth97.get(7), mWeightMonth97.get(8),
mWeightMonth97.get(9), mWeightMonth97.get(10),
mWeightMonth97.get(11), mWeightMonth97.get(12) });
addXYSeries(dataset, new String[] { "97%" }, x, values1, 1);
values2.add(new double[] { mWeightMonth75.get(0),
mWeightMonth75.get(1), mWeightMonth75.get(2),
mWeightMonth75.get(3), mWeightMonth75.get(4),
mWeightMonth75.get(5), mWeightMonth75.get(6),
mWeightMonth75.get(7), mWeightMonth75.get(8),
mWeightMonth75.get(9), mWeightMonth75.get(10),
mWeightMonth75.get(11), mWeightMonth75.get(12) });
addXYSeries(dataset, new String[] { "75%" }, x, values2, 1);
values3.add(new double[] { mWeightMonth50.get(0),
mWeightMonth50.get(1), mWeightMonth50.get(2),
mWeightMonth50.get(3), mWeightMonth50.get(4),
mWeightMonth50.get(5), mWeightMonth50.get(6),
mWeightMonth50.get(7), mWeightMonth50.get(8),
mWeightMonth50.get(9), mWeightMonth50.get(10),
mWeightMonth50.get(11), mWeightMonth50.get(12) });
addXYSeries(dataset, new String[] { "50%" }, x, values3, 1);
values4.add(new double[] { mWeightMonth25.get(0),
mWeightMonth25.get(1), mWeightMonth25.get(2),
mWeightMonth25.get(3), mWeightMonth25.get(4),
mWeightMonth25.get(5), mWeightMonth25.get(6),
mWeightMonth25.get(7), mWeightMonth25.get(8),
mWeightMonth25.get(9), mWeightMonth25.get(10),
mWeightMonth25.get(11), mWeightMonth25.get(12) });
addXYSeries(dataset, new String[] { "25%" }, x, values4, 1);
values5.add(new double[] { mWeightMonth3.get(0), mWeightMonth3.get(1),
mWeightMonth3.get(2), mWeightMonth3.get(3),
mWeightMonth3.get(4), mWeightMonth3.get(5),
mWeightMonth3.get(6), mWeightMonth3.get(7),
mWeightMonth3.get(8), mWeightMonth3.get(9),
mWeightMonth3.get(10), mWeightMonth3.get(11),
mWeightMonth3.get(12) });
addXYSeries(dataset, new String[] { "3% (Weight)" }, x, values5, 1);
double[] WeightInKg = null;
if (!mWeightValueKg.isEmpty() && !mWeightInKgMonthDate.isEmpty()) {
WeightInKg = new double[mWeightValueKg.size()];
for (int i = 0; i < mWeightValueKg.size(); i++) {
WeightInKg[i] = mWeightValueKg.get(i);
}
values6.add(WeightInKg);
double[] dateValue = new double[mWeightInKgMonthDate.size()];
for (int i = 0; i < mWeightInKgMonthDate.size(); i++) {
dateValue[i] = mWeightInKgMonthDate.get(i);
}
x1.add(dateValue);
addXYSeries(dataset, new String[] { "" }, x1, values6, 1);
}
if (!mHeightInCmsMonthDate.isEmpty()) {
seriesMin7 = dataset.getSeriesAt(6);
seriesMin8 = dataset.getSeriesAt(7);
seriesMin9 = dataset.getSeriesAt(8);
seriesMin10 = dataset.getSeriesAt(9);
seriesMin11 = dataset.getSeriesAt(10);
seriesMin7.addAnnotation("3%", 37,
mWeightMonth3.get(mWeightMonth3.size() - 1));
seriesMin8.addAnnotation("25%", 37,
mWeightMonth25.get(mWeightMonth25.size() - 1));
seriesMin9.addAnnotation("50%", 37,
mWeightMonth50.get(mWeightMonth50.size() - 1));
seriesMin10.addAnnotation("75%", 37,
mWeightMonth75.get(mWeightMonth75.size() - 1));
seriesMin11.addAnnotation("97%", 37,
mWeightMonth97.get(mWeightMonth97.size() - 1));
if (!mWeightInKgMonthDate.isEmpty()) {
seriesMin12 = dataset.getSeriesAt(11);
for (int i = 0; i < mWeightInKgMonthDate.size(); i++) {
seriesMin12.addAnnotation("(" + mWeightInKgMonthDate.get(i)
+ " , " + WeightInKg[i] + ")",
mWeightInKgMonthDate.get(i), WeightInKg[i]);
}
}
} else {
seriesMin6 = dataset.getSeriesAt(5);
seriesMin7 = dataset.getSeriesAt(6);
seriesMin8 = dataset.getSeriesAt(7);
seriesMin9 = dataset.getSeriesAt(8);
seriesMin10 = dataset.getSeriesAt(9);
seriesMin6.addAnnotation("3%", 37,
mWeightMonth3.get(mWeightMonth3.size() - 1));
seriesMin7.addAnnotation("25%", 37,
mWeightMonth25.get(mWeightMonth25.size() - 1));
seriesMin8.addAnnotation("50%", 37,
mWeightMonth50.get(mWeightMonth50.size() - 1));
seriesMin9.addAnnotation("75%", 37,
mWeightMonth75.get(mWeightMonth75.size() - 1));
seriesMin10.addAnnotation("97%", 37,
mWeightMonth97.get(mWeightMonth97.size() - 1));
if (!mWeightInKgMonthDate.isEmpty()) {
seriesMin11 = dataset.getSeriesAt(10);
for (int i = 0; i < mWeightInKgMonthDate.size(); i++) {
seriesMin11.addAnnotation("(" + mWeightInKgMonthDate.get(i)
+ " , " + WeightInKg[i] + ")",
mWeightInKgMonthDate.get(i), WeightInKg[i]);
}
}
}
GraphicalView mView = ChartFactory.getCubeLineChartView(context,
dataset, renderer, 0.3f);
return mView;
}
答案 0 :(得分:0)
if (!(mWeightInKgMonthDate.isEmpty() && mHeightInCmsMonthDate.isEmpty()))
到
if (!mWeightInKgMonthDate.isEmpty() && !mHeightInCmsMonthDate.isEmpty())
多数民众赞成......