Android 单系列条形图,根据条形图中的给定数据显示多种颜色
我正在使用achartengine库开发一个条形图,它有两个单独的系列。其中一个系列应始终显示相同的颜色,另一个系列根据给定的值显示不同的颜色 例如: x<300蓝色>300橙色 代码如下:`Android 单系列条形图,根据条形图中的给定数据显示多种颜色,android,achartengine,Android,Achartengine,我正在使用achartengine库开发一个条形图,它有两个单独的系列。其中一个系列应始终显示相同的颜色,另一个系列根据给定的值显示不同的颜色 例如: x300橙色 代码如下:` public class ChartActivity extends Activity { private String[] mMonth = new String[] { "Jan", "Feb" , "Mar", "Apr", "May", "Jun",
public class ChartActivity extends Activity {
private String[] mMonth = new String[] {
"Jan", "Feb" , "Mar", "Apr", "May", "Jun",
"Jul", "Aug" , "Sep", "Oct", "Nov", "Dec"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chart);
Button btnChart = (Button) findViewById(R.id.btn_chart);
// Defining click event listener for the button btn_chart
OnClickListener clickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// Draw the Income vs Expense Chart
openChart();
}
};
btnChart.setOnClickListener(clickListener);
}
private void openChart(){
int[] x = { 0,1,2,3,4,5,6,7 };
int[] income = { 25,50,75,100,125,150,175};
int[] expense = {50, 75, 100, 125, 150, 175, 200, 225 };
// Creating an XYSeries for Income
XYSeries incomeSeries = new XYSeries("Income");
// Creating an XYSeries for Expense
XYSeries expenseSeries = new XYSeries("Expense");
// Adding data to Income and Expense Series
for(int i=0;i<x.length;i++){
incomeSeries.add(i,income[i]);
expenseSeries.add(i,expense[i]);
}
// Creating a dataset to hold each series
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
// Adding Income Series to the dataset
dataset.addSeries(incomeSeries);
// Adding Expense Series to dataset
dataset.addSeries(expenseSeries);
// Creating XYSeriesRenderer to customize incomeSeries
XYSeriesRenderer incomeRenderer = new XYSeriesRenderer();
incomeRenderer.setColor(Color.BLUE);
incomeRenderer.setFillPoints(true);
incomeRenderer.setLineWidth(2);
incomeRenderer.setDisplayChartValues(true);
// Creating XYSeriesRenderer to customize expenseSeries
XYSeriesRenderer expenseRenderer = new XYSeriesRenderer();
expenseRenderer.setColor(Color.RED);
expenseRenderer.setFillPoints(true);
expenseRenderer.setLineWidth(2);
expenseRenderer.setDisplayChartValues(true);
// Creating a XYMultipleSeriesRenderer to customize the whole chart
XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
multiRenderer.setXLabels(0);
multiRenderer.setAxesColor(Color.BLACK);
multiRenderer.setXLabelsAlign(Align.RIGHT);
multiRenderer.setChartTitle("Income vs Expense Chart");
multiRenderer.setXTitle("Year 2012");
multiRenderer.setYTitle("Amount in Dollars");
multiRenderer.setBarSpacing(0.5);
multiRenderer.setMarginsColor(Color.WHITE);
multiRenderer.setApplyBackgroundColor(true);
multiRenderer.setBackgroundColor(Color.WHITE);
multiRenderer.setMargins(new int[] {20, 30, 15, 0});
multiRenderer.setZoomButtonsVisible(true);
for(int i=0; i< x.length;i++){
multiRenderer.addXTextLabel(i, mMonth[i]);
}
// Adding incomeRenderer and expenseRenderer to multipleRenderer
// Note: The order of adding dataseries to dataset and renderers to multipleRenderer
// should be same
multiRenderer.addSeriesRenderer(incomeRenderer);
multiRenderer.addSeriesRenderer(expenseRenderer);
// Creating an intent to plot bar chart using dataset and multipleRenderer
Intent intent = ChartFactory.getBarChartIntent(getBaseContext(), dataset, multiRenderer, Type.DEFAULT);
// Start Activity
startActivity(intent);
}`
公共类ChartActivity扩展活动{
私有字符串[]mMonth=新字符串[]{
“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”
};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_图表);
按钮btnChart=(按钮)findViewById(R.id.btn\U图表);
//为按钮btn\U图表定义单击事件侦听器
OnClickListener clickListener=新建OnClickListener(){
@凌驾
公共void onClick(视图v){
//绘制收入与支出的图表
openChart();
}
};
btnChart.setOnClickListener(单击Listener);
}
私有void openChart(){
int[]x={0,1,2,3,4,5,6,7};
int[]收入={25,50,75100125150175};
int[]费用={50,75,100,125,150,175,200,225};
//创建收入系列
XYSeries incomeSeries=新XYSeries(“收入”);
//为费用创建XYSeries
XYSeries expenseSeries=新的XYSeries(“费用”);
//向收入和支出系列添加数据
对于(int i=0;i单个系列(或相同系列的元素)的不同颜色,Achartengine库尚未实现或提供…:
但也有使用多系列或堆叠条形图的方法
检查螺纹。和
更新:
stacke条形图的构造
假设您要使用不同颜色的输入数据
int[] expense = {50, 75, 100, 125, 150, 175, 200, 225 };
将不同系列声明为数组列表
static ArrayList<Integer> series1 = new ArrayList<Integer>();
static ArrayList<Integer> series2 = new ArrayList<Integer>();
static ArrayList<Integer> series3 = new ArrayList<Integer>();
static ArrayList series1=new ArrayList();
静态ArrayList系列2=新ArrayList();
静态ArrayList系列3=新ArrayList();
现在检查输入数据并将其添加到相应的序列中
for(int i=0;i<expense.lenght;i++)
{
if(expense[i]> 50 & expense[i]<100)
{ series1.add(expense[i]);
series2.add(0);
series3.add(0);}
if(expense[i]> 100 & expense[i]<150)
{.......}
}
for(int i=0;i 50和费用[i]100和费用[i]嗨,Kiran,我以前看过这些链接,你能给我推荐更多的链接吗…?我想根据我上面解释的值实现不同颜色的单系列条形图…tat是不可能的…即使我有tat问题,所以我使用了堆叠条形图,你可以尝试使用堆叠,你能实现单系列和多系列吗五颜六色??