Android highcharts显示单输入条形图
我正在安卓系统中制作高图。我正试图用一个条目来显示。下面是代码Android highcharts显示单输入条形图,android,highcharts,bar-chart,android-highcharts,Android,Highcharts,Bar Chart,Android Highcharts,我正在安卓系统中制作高图。我正试图用一个条目来显示。下面是代码 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); HIChartView
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
HIChartView chartView = findViewById(R.id.hc);
HIOptions options = new HIOptions();
HIChart chart = new HIChart();
chart.setType("bar");
options.setChart(chart);
HITitle title = new HITitle();
title.setText("Historic World Population by Region");
options.setTitle(title);
HISubtitle subtitle = new HISubtitle();
subtitle.setText("Source: <a href=\\\"https://en.wikipedia.org/wiki/World_population\\\">Wikipedia.org</a>Source: <a href=\\\"https://en.wikipedia.org/wiki/World_population\\\">Wikipedia.org</a>");
options.setSubtitle(subtitle);
HIXAxis xaxis = new HIXAxis();
String[] categories = new String[] { "Africa", "America", "Asia", "Europe", "Oceania"};
xaxis.setCategories(new ArrayList<>(Arrays.asList(categories)));
options.setXAxis(new ArrayList<HIXAxis>(){{add(xaxis);}});
HIYAxis yaxis = new HIYAxis();
yaxis.setMin(0);
yaxis.setTitle(new HITitle());
yaxis.getTitle().setText("Population (millions)");
yaxis.getTitle().setAlign("high");
yaxis.setLabels(new HILabels());
yaxis.getLabels().setOverflow("justify");
options.setYAxis(new ArrayList<HIYAxis>(){{add(yaxis);}});
HITooltip tooltip = new HITooltip();
tooltip.setValueSuffix(" millions");
options.setTooltip(tooltip);
HILegend legend = new HILegend();
legend.setLayout("vertical");
legend.setAlign("right");
legend.setVerticalAlign("top");
legend.setX(-40);
legend.setY(80);
legend.setFloating(true);
legend.setBorderWidth(1);
legend.setBackgroundColor(HIColor.initWithHexValue("FFFFFF"));
legend.setShadow(true);
options.setLegend(legend);
HICredits credits = new HICredits();
credits.setEnabled(false);
options.setCredits(credits);
HIBar bar1 = new HIBar();
bar1.setName("Year 1800");
Number[] bar1Data = new Number[] {107, 31, 635, 203, 2 };
bar1.setData(new ArrayList<>(Arrays.asList(bar1Data)));
HIBar bar2 = new HIBar();
bar2.setName("Year 1900");
Number[] bar2Data = new Number[] { 133, 156, 947, 408, 6 };
bar2.setData(new ArrayList<>(Arrays.asList(bar2Data)));
HIBar bar3 = new HIBar();
bar3.setName("Year 2012");
Number[] bar3Data = new Number[] { 1052, 954, 4250, 740, 38 };
bar3.setData(new ArrayList<>(Arrays.asList(bar3Data)));
options.setSeries(new ArrayList<>(Arrays.asList(bar1, bar2,bar3)));
chartView.setOptions(options);
}
}
public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
HIChartView chartView=findViewById(R.id.hc);
HIOptions options=新的HIOptions();
HIChart图表=新的HIChart();
图表.设置类型(“条形”);
选项。设置图表(图表);
HITitle title=新的HITitle();
标题.setText(“按区域分列的历史世界人口”);
选项。设置标题(标题);
HISubtitle subtitle=新的HISubtitle();
副标题.setText(“来源:来源:”);
选项。设置子标题(副标题);
HIXAxis xaxis=新的HIXAxis();
字符串[]类别=新字符串[]{“非洲”、“美洲”、“亚洲”、“欧洲”、“大洋洲”};
setCategories(新的ArrayList(Arrays.asList(categories));
setXAxis(新的ArrayList(){{add(xaxis);}});
HIYAxis yaxis=新的HIYAxis();
yaxis.setMin(0);
setTitle(新的HITitle());
yaxis.getTitle().setText(“人口(百万)”;
yaxis.getTitle().setAlign(“高”);
setLabels(新的HILabels());
yaxis.getLabels().setOverflow(“justify”);
options.setYAxis(newarraylist(){{add(yaxis);}});
HITooltip工具提示=新建HITooltip();
工具提示:setValueSuffix(“百万”);
选项。设置工具提示(工具提示);
HILegend图例=新的HILegend();
图例。设置布局(“垂直”);
图例。setAlign(“右”);
图例:setVerticalAlign(“顶部”);
图例.setX(-40);
塞蒂(80岁);
图例.setFloating(真);
图例.宽度(1);
legend.setBackgroundColor(HIColor.initWithHexValue(“FFFFFF”));
图例。设置阴影(正确);
选项。设置图例(图例);
HICredits credits=新HICredits();
credits.setEnabled(false);
选项。设置学分(学分);
HIBar bar1=新的HIBar();
bar1.设定名称(“1800年”);
编号[]bar1Data=新编号[]{107,31635203,2};
bar1.setData(新的ArrayList(Arrays.asList(bar1Data));
HIBar bar2=新的HIBar();
bar2.设定名称(“1900年”);
Number[]bar2Data=新编号[]{133、156、947、408、6};
setData(新的ArrayList(Arrays.asList(bar2Data));
HIBar bar3=新的HIBar();
bar3.设定名称(“2012年”);
编号[]bar3Data=新编号[]{1052954425074038};
setData(新的ArrayList(Arrays.asList(bar3Data));
options.setSeries(新的ArrayList(Arrays.asList(bar1、bar2、bar3));
图表视图。设置选项(选项);
}
}
输出
预期产出
我希望每个月有一个条目,如下所示
我尝试过的
我已经尝试了下面的代码
HIXAxis xaxis = new HIXAxis();
String[] categories = new String[] { "Mar-2021", "Apr-2021","May-2021"};
xaxis.setCategories(new ArrayList<>(Arrays.asList(categories)));
options.setXAxis(new ArrayList<HIXAxis>(){{add(xaxis);}});
HIBar bar1 = new HIBar();
bar1.setName("March");
Number[] bar1Data = new Number[]{10};
bar1.setData(new ArrayList<>(Arrays.asList(bar1Data)));
HIBar bar2 = new HIBar();
bar2.setName("April");
Number[] bar2Data = new Number[] {15};
bar2.setData(new ArrayList<>(Arrays.asList(bar2Data)));
HIBar bar3 = new HIBar();
bar3.setName("May");
Number[] bar3Data = new Number[] {20};
bar3.setData(new ArrayList<>(Arrays.asList(bar3Data)));
HIXAxis-xaxis=new-HIXAxis();
字符串[]类别=新字符串[]{“Mar-2021”、“Apr-2021”、“May-2021”};
setCategories(新的ArrayList(Arrays.asList(categories));
setXAxis(新的ArrayList(){{add(xaxis);}});
HIBar bar1=新的HIBar();
bar1.设定名称(“三月”);
编号[]bar1Data=新编号[]{10};
bar1.setData(新的ArrayList(Arrays.asList(bar1Data));
HIBar bar2=新的HIBar();
bar2.设定名称(“四月”);
编号[]bar2Data=新编号[]{15};
setData(新的ArrayList(Arrays.asList(bar2Data));
HIBar bar3=新的HIBar();
bar3.设置名称(“可能”);
编号[]bar3Data=新编号[]{20};
setData(新的ArrayList(Arrays.asList(bar3Data));
输出
输出不是我所期望的,因为它显示了单个月的所有3个值
更新1
我已经找到了一个网络解决方案,但不幸的是,我无法在我的android代码中实现同样的效果。这是您需要增加的数据量,而不是序列量。因此,与多个系列不同:
HIBar bar1 = new HIBar();
Number[] bar1Data = new Number[]{10};
...
HIBar bar2 = new HIBar();
Number[] bar2Data = new Number[] {15};
...
HIBar bar3 = new HIBar();
Number[] bar3Data = new Number[] {20};
...
使用具有多个点的一个系列:
HIBar bar1 = new HIBar();
Number[] bar1Data = new Number[] {107, 31, 635, 203, 2 };
bar1.setData(new ArrayList<>(Arrays.asList(bar1Data)));
HIBar bar1=新的HIBar();
编号[]bar1Data=新编号[]{107,31635203,2};
bar1.setData(新的ArrayList(Arrays.asList(bar1Data));
如何将每个点设置为不同的颜色?您好@Moeez,您需要启用colorByPoint
属性。示例:bar1.setColorByPoint(true)代码>它像一个符咒一样工作。我又加了一个。你能看一下吗?