hellocharts的折线图与柱状图的结合之ComboLineColumnChartView
哼哼,网上找了半天都不全,所以决定自己写一个完整的可以直接贴代码的
test.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <lecho.lib.hellocharts.view.ComboLineColumnChartView
android:id="@+id/combochart"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
AddColumnLineData.java(专门用于添加数据)
package com.shaoxin.myhellocharts; import android.graphics.Color; import java.util.ArrayList;
import java.util.List; import lecho.lib.hellocharts.gesture.ZoomType;
import lecho.lib.hellocharts.model.Axis;
import lecho.lib.hellocharts.model.AxisValue;
import lecho.lib.hellocharts.model.Column;
import lecho.lib.hellocharts.model.ColumnChartData;
import lecho.lib.hellocharts.model.Line;
import lecho.lib.hellocharts.model.LineChartData;
import lecho.lib.hellocharts.model.PointValue;
import lecho.lib.hellocharts.model.SubcolumnValue;
import lecho.lib.hellocharts.model.ValueShape;
import lecho.lib.hellocharts.util.ChartUtils;
import lecho.lib.hellocharts.view.ColumnChartView; import static com.shaoxin.myhellocharts.LineColumn.comboChart; /**
* Created by shaoxin on 2016/12/22.
*/ public class AddColumnLineData { public final static String[] months = new String[]{"Jan", "Feb", "Mar",
"Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",};
public static ColumnChartView columnChart;
public static List<AxisValue> axisValues; //设置折线图,添加设置好的数据
public static LineChartData initLineCharData(List<Line> dataLine) {
LineChartData lineCharData = new LineChartData(dataLine);
//初始化轴
Axis axisX = new Axis().setHasLines(true);
Axis axisY = new Axis().setHasLines(true);
axisX.setName("时间");
axisY.setName("销量");
lineCharData.setAxisYLeft(axisY);
lineCharData.setAxisXBottom(axisX);
return lineCharData;
} //定义方法设置折线图中数据
public static List<Line> initDataLine() {
List<Line> lineList = new ArrayList<>();
List<PointValue> pointValueList = new ArrayList<>(); int numLines = months.length;
for (int i = 0; i < numLines; ++i) {
pointValueList.add(new PointValue(i, (float) Math.random() * 50f + 5));
axisValues.add(new AxisValue(i).setLabel(months[i]));
} Line line = new Line(pointValueList);
line.setColor(Color.RED);
line.setShape(ValueShape.CIRCLE);
line.setHasLabelsOnlyForSelected(true);
lineList.add(line); return lineList;
} //定义方法设置柱状图中数据
public static ColumnChartData initColumnCharData(List<Column> dataLine) {
ColumnChartData columnData = new ColumnChartData(dataLine); columnData.setAxisXBottom(new Axis(axisValues).setHasLines(true)
.setTextColor(Color.BLACK));
columnData.setAxisYLeft(new Axis().setHasLines(true)
.setTextColor(Color.BLACK).setMaxLabelChars(2));
// Set selection mode to keep selected month column highlighted.
comboChart.setValueSelectionEnabled(true);
comboChart.setZoomType(ZoomType.HORIZONTAL); return columnData;
} //定义方法设置柱状图中数据
public static List<Column> initColumnLine() {
List<Column> list = new ArrayList<>();
List<SubcolumnValue> subcolumnValueList;
axisValues = new ArrayList<AxisValue>();
int numSubcolumns = 1;
int numColumns = months.length;
for (int i = 0; i < numColumns; ++i) {
subcolumnValueList = new ArrayList<SubcolumnValue>();
for (int j = 0; j < numSubcolumns; ++j) {
subcolumnValueList.add(new SubcolumnValue((float) Math.random() * 50f + 5,
ChartUtils.pickColor()));
}
// 点击柱状图就展示数据量
axisValues.add(new AxisValue(i).setLabel(months[i]));
list.add(new Column(subcolumnValueList).setHasLabelsOnlyForSelected(true));
}
return list;
} }
LineColumn.java
package com.shaoxin.myhellocharts; import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity; import java.util.List; import lecho.lib.hellocharts.listener.ComboLineColumnChartOnValueSelectListener;
import lecho.lib.hellocharts.model.Axis;
import lecho.lib.hellocharts.model.Column;
import lecho.lib.hellocharts.model.ColumnChartData;
import lecho.lib.hellocharts.model.ComboLineColumnChartData;
import lecho.lib.hellocharts.model.Line;
import lecho.lib.hellocharts.model.LineChartData;
import lecho.lib.hellocharts.model.PointValue;
import lecho.lib.hellocharts.model.SubcolumnValue;
import lecho.lib.hellocharts.model.Viewport;
import lecho.lib.hellocharts.view.ComboLineColumnChartView; import static com.shaoxin.myhellocharts.AddColumnLineData.axisValues;
import static com.shaoxin.myhellocharts.AddColumnLineData.initColumnCharData;
import static com.shaoxin.myhellocharts.AddColumnLineData.initColumnLine;
import static com.shaoxin.myhellocharts.AddColumnLineData.initDataLine;
import static com.shaoxin.myhellocharts.AddColumnLineData.initLineCharData; /**
* Created by shaoxin on 2016/12/22.
*/ public class LineColumn extends AppCompatActivity {
static ComboLineColumnChartView comboChart; @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
comboChart = (ComboLineColumnChartView) findViewById(R.id.combochart); comboChart.setZoomEnabled(true);//设置是否支持缩放
//为图表设置值得触摸事件
//设置值触摸侦听器,将触发图表顶部的变化。
comboChart.setOnValueTouchListener(new ComboLineColumnChartOnValueSelectListener() {
@Override
public void onColumnValueSelected(int i, int i1, SubcolumnValue subcolumnValue) { } @Override
public void onPointValueSelected(int i, int i1, PointValue pointValue) { } @Override
public void onValueDeselected() { }
});
//设置图表是否可以与用户互动
comboChart.setInteractive(true);
//设置图表数据是否选中进行显示
comboChart.setValueSelectionEnabled(true);
//定义组合数据对象
ComboLineColumnChartData comboLineColumnChartData = new ComboLineColumnChartData();
//为图表设置数据,数据类型为ComboLineColumnChartData
comboChart.setComboLineColumnChartData(comboLineColumnChartData); //为组合图设置折现图数据
List<Line> dataLine = initDataLine();
LineChartData lineCharData = initLineCharData(dataLine);
lineCharData.setLines(dataLine);
comboLineColumnChartData.setLineChartData(lineCharData); //为组合图设置柱形图数据
List<Column> dataColumn = initColumnLine();
ColumnChartData columnChartData = initColumnCharData(dataColumn);
columnChartData.setColumns(dataColumn);
comboLineColumnChartData.setColumnChartData(columnChartData); comboLineColumnChartData.setValueLabelsTextColor(Color.BLACK);// 设置数据文字颜色
comboLineColumnChartData.setValueLabelTextSize(25);// 设置数据文字大小
comboLineColumnChartData.setValueLabelTypeface(Typeface.MONOSPACE);// 设置数据文字样式 Axis axisX = new Axis().setHasLines(true);
Axis axisY = new Axis().setHasLines(true);
axisX.setValues(axisValues);
axisY.setTextColor(Color.BLACK);
axisY.setTextColor(Color.BLACK);
comboLineColumnChartData.setAxisYLeft(axisY);
comboLineColumnChartData.setAxisXBottom(axisX);
//comboLineColumnChartData.setAxisYRight(axisYRight);//设置右边显示的轴
//comboLineColumnChartData.setAxisXTop(axisXTop);//设置顶部显示的轴
comboChart.setComboLineColumnChartData(comboLineColumnChartData);//为组合图添加数据 Viewport viewport = initViewPort();
comboChart.setMaximumViewport(viewport);
comboChart.setCurrentViewport(viewport);
} private Viewport initViewPort() {
Viewport viewport = new Viewport();
viewport.top = 60;
viewport.bottom = 0;
viewport.left = -2;
viewport.right = 20; return viewport;
} public static ComboLineColumnChartView getComboLineColumnChartView() {
return comboChart;
}
}
觉得有用的话别忘了评论点个赞啥的,没用就忽略
hellocharts的折线图与柱状图的结合之ComboLineColumnChartView的更多相关文章
- excel在一个图表内,显示折线图和柱状图
折线图和柱状图,在同一个图表中拆分显示 一个图,设置主坐标轴 另外一个图,设置次坐标轴 拆分,通过调整纵坐标的最小值和最大值来实现 关于图表的标题,选中图表,选择布局,然后图表 ...
- echarts、higncharts折线图或柱状图显示数据为0的点
echarts.higncharts折线图或柱状图只需要后端传到前端一段json数据,接送数据的x轴与y周有对应数据,折线图或柱状图就会渲染出这数据. 比如,x轴表示美每天日期,y轴表示数量.他们的数 ...
- DevExpress 折线图和柱状图的绘制与数据绑定
DevExpress 组件是一个非常丰富和强大的组件,适合各种可视化图形的绘制与展示,在数据分析展示中是个很有帮助的,网上也有很多关于这方面的文章,关于折线图或柱状图的画法,以下是自己在工作中接触到的 ...
- MATLAB之折线图、柱状图、饼图以及常用绘图技巧
MATLAB之折线图.柱状图.饼图以及常用绘图技巧 一.折线图 参考代码: %图1:各模式直接成本预测 %table0-table1为1*9的数组,记录关键数据 table0 = data_modol ...
- Qt数据可视化(散点图、折线图、柱状图、盒须图、饼状图、雷达图)开发实例
目录 散点图 折线图 柱状图 水平柱状图 水平堆叠图 水平百分比柱状图 盒须图 饼状图 雷达图 Qt散点图.折线图.柱状图.盒须图.饼状图.雷达图开发实例. 在开发过程中我们会使用多各种各样的图 ...
- DevExpress使用之ChartControl控件绘制图表(多坐标折线图、柱状图、饼状图)
最近因为公司项目需要用到WinForm的DecExpress控件,在这里把一些使用方法总结一下. DevExpress中有一个专门用来绘制图表的插件ChartControl,可以绘制折线图.饼状图.柱 ...
- VS2010 使用TeeChart画图控件 - 之二 - 绘制图形(折线图,柱状图)
1.前期准备 详细可见VS2010 使用TeeChart画图控件 - 之中的一个 控件和类的导入 1. 1 加入TeeChart控件,给控件加入变量m_TeeChart 加入TeeChart控件,右击 ...
- RDLC报表系列(六) 多图表-折线图和柱状图
美好的一天开始了,这篇是RDLC系列的最后一篇文章,我的小项目也已经release,正在测试中. 1.新建demo3.aspx和demo3.rdlc文件 2.往rdlc文件中拖一个图标控件,在弹出的窗 ...
- Jquery画折线图、柱状图、饼图
1.今天做了一个折线图,首先需要导js文件.这里有一个demo:http://files.cnblogs.com/files/feifeishi/jquery_zhexiantubingtuzhuzh ...
随机推荐
- Android之列表索引
其实这个功能是仿苹果的,但是现在大多数Android设备都已经有了这个功能,尤其是在通讯录中最为常见.先来看看今天这个DEMO的效果图(如下图):从图中我们可以看到,屏幕中的主体是一个ListView ...
- Java文件操作
1.通过File类中的createNewFile()创建一个新的文件 /** * 测试创建文件 * @throws IOException */ @Test pub ...
- oracle DDL(数据定义语言)基本语句
--创建表格 create table production( ProductIdvarchar2(10), ProductNamevarchar2(20), ProductPricenumber( ...
- python动态创建类的声明
动态创建类的声明 使用内置函数type,原型:class type(name, bases, dict)name是类的名字,相当于__class__bases是类的基类,元组,可以有多个基类,但是基类 ...
- CentOS 6.5移除openJDK及JDK安装环境变量配置及JDK版本切换
一.查找已经安装的open JDK [root@localhost ~]# rpm -qa|grep jdk java--openjdk-.el6_3.x86_64 java--openjdk-1.7 ...
- BZOJ 3160: 万径人踪灭
Description 一个ab串,问有多少回文子序列,字母和位置都对称,并且不连续. Sol FFT+Manacher. 不连续只需要减去连续的就可以了,连续的可以直接Manacher算出来. 其他 ...
- ovirt配置为cas登录
准备工作 Ovirt测试机.CAS服务器.AD服务器 cas.crt -- CAS服务器的CA证书 allwinner.cer -- CAS服务器的证书颁发机构根证书 Ovirt测试机要求:apach ...
- virtualenv基本操作(windows环境)
1 下载virtualenv pip install virtualenv 2 创建一个virtualenv工作目录 mkdir myproject_env 3 穿件一个python项目 virtua ...
- touch命令
[touch] 改变文件的时间戳 命令格式: touch [OPTION]... FILE... 命令功能: 更新每个文件的访问和修改时间到当前时间或建立一个不存在的文件 命令参数: -a ...
- Nodejs 的 Express框架 学习体会 补充中。。。
最近为了用Shadow Socket FQ,到https://bandwagonhost.com上买了一个便宜的vps,19.99美元一年.服务器闲着也是闲着,就想搭建一个简单的博客. Express ...