android趋势图
① android里,已知3个坐标(a,b)(c,d)(x,y),如何在XY坐标系中将3点相连绘制出线性趋势图显示在页面中
achartengine 你可以看一下这个 画趋势图 统计信息直方图等 都可以直接调用函数去画,他还有画时间图,X轴为时间
② 关于android软件编程中如何画函数折线图的问题
用Canvas的drawLine方法就可以了canvas.drawLine(startX, startY, stopX, stopY, paint);
startX, startY为起始坐标;
stopX, stopY为终点坐标;
paint就是一个Paint对象;
比如你的横坐标的第一个坐标是(1, 2), 第二个坐标是(2, 5), 第三个坐标是(3, 10),那么这段折线可以这样画:
canvas.drawLine(1,2,2,5,paint);
canvas.drawLine(2,5,3,10,paint);
以此类推,剩下的3段折线都可以这样画出来
③ Android MPAndroidChart 折线图设置哪些属性
在org.achartengine.renderer这个包里有一个类BasicStroke,可以改变线型(实线、虚线、点线),而折线图中用的是XYMultipleSeriesRenderer这个类,它继承自DefaultRenderer,这个与BasicStroke是一个包里的子类,DefaultRenderer有一个方法是setShowGridY(boolean showGrid),感觉在这个方法里肯定有设置线型的语句,但是我现在没找到AChartEngine的具体五毛源码,不知道这个方法具体是怎样的,只能提供给你一个思路……我几个月前也捣鼓过AChartEngine
④ android怎么让折线图上方显示数字
直接在旁边写数字就可以了。主要画折线图。
步骤一:折线图的坐标集
首先应该创建 XYSeries对象 : 用于提供绘制的点集合的数据
XYSeries series = new XYSeries(titles[i]); // 根据每条线的名称创建
将所有的坐标加入这个集合
series .add (xV[k], yV[k]);
XYMultipleSeriesDataset对象 用于 保存点集数据 ,包括每条曲线的X,Y坐标
// 用于数据的存放
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
dataset .addSeries (series);
步骤二:折线图的样式集
定义每条曲线的颜色
int [] colors = new int [] {Color. BLUE ,Color. GREEN };
定义每条曲线的点的形状
PointStyle [] styles =
new PointStyle []{ PointStyle . CIRCLE , PointStyle . DIAMOND };
曲线图的格式,包括颜色,值的范围,点和线的形状等等 都封装在 XYSeriesRender对象中,再将XYSeriesRender对象封装在 XYMultipleSeriesRenderer 对象中
XYSeriesRenderer r = new XYSeriesRenderer();
r.setColor(colors[i]);
r.setPointStyle(styles[i]);
r.setFillPoints(fill);
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.addSeriesRenderer(r);
设置折线图名称,坐标轴的名称,坐标轴的起点重点,坐标轴的颜色,坐标轴上数字的颜色
setChartSettings(renderer, "Line Chart Demo" , "X" , "Y" , - 1 , 12, 0, 35 , Color. WHITE , Color. WHITE );
步骤三:显示折线图
View chart = ChartFactory. getLineChartView ( this , dataset, renderer);
setContentView(chart);
⑤ 如何在android画分析图(例如 柱状图、趋势图、饼图)
目前android上图标引擎并不少见,像aChartEngine就能很好的完成绘图:
aChartEngine支持:1、linechart(折线图)2、areachart(面积图;分区图,对比图)3、scatterchart(散点图)4、timechart(时间图;进度表)5、barchart(条形图;柱状图)6、piechart(饼图)7、bubblechart(气泡图)8、doughnutchart(圆环图)9、range(high-low)barchart(范围条形图)10、dialchart/gauge(拨号盘/压力表)11、combined(anycombinationofline,cubicline,scatter,bar,rangebar,bubble)chart(组合图)12、cubiclinechart(立方折线图)
上述所有支持的图表类型,都可以包含多个系列,都支持水平(默认)或垂直方式展示图表,并且支持许多其他的自定义功能。所有图表都可以建立为一个view,也可以建立为一个用于启动activity的intent.
下面是一个饼状图的源码事例:
package org.achartengine.chartdemo.demo.chart;
import org.achartengine.ChartFactory;
import org.achartengine.renderer.DefaultRenderer;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
public class BudgetPieChart extends AbstractDemoChart {
public String getName() {
return "Budget chart";
}
public String getDesc() {
return "The budget per project for this year (pie chart)";
}
public Intent execute(Context context) {
double[] values = new double[] { 12, 14, 11, 10, 19 };//饼图分层5块,每块代表的数值
int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA, Color.YELLOW, Color.CYAN };//每块饼图的颜色
DefaultRenderer renderer = buildCategoryRenderer(colors);
renderer.setZoomButtonsVisible(true);//设置显示放大缩小按钮
renderer.setZoomEnabled(true);//设置允许放大缩小.
renderer.setChartTitleTextSize(20);//设置图表标题的文字大小
return ChartFactory.getPieChartIntent(context, buildCategoryDataset("Project budget", values),
renderer, "Budget");//构建Intent, buildCategoryDataset是调用AbstraDemoChart的构建方法.
}
}
⑥ android mpandroid横坐标间隔不均匀折线图怎么让
软件版本:Office2007方法如下:1.在Excel中如果横坐标是日期,系统会自动均匀排布日期,如下图所示:2.右键点击横坐标,选择“设置坐标轴格式”:3.将坐标轴类型改成“文本类型”,即可让日期按照选定的数据排布:
⑦ Android自定义View - 仿支付宝月账单折线图
支付宝有个查看月账单的功能,最近一直在学习自定义View,于是就尝试着自己实现了一个类似的折线图。
下面是支付宝消费分析功能截图和自己实现的折线效果截图:
在绘制折线图之前首先要分析折线图需要绘制哪些部分以及如何绘制这些部分,确定了各绘制部分及绘制方法之后再开始具体的绘制。
将折线图分为四个绘制区域:
现在已经知道了折线需要绘制哪些部分以及各部分的绘制方法,接下来要做的就是确定绘制折线各部分所需要的点的坐标。
从下面绘制分析图可以直观地看到月份文字中间点x坐标,数据点x坐标,数据点处圆的圆心x坐标以及消费金额文字中间点x坐标的值是相同的,所以只需要确定数据点的x坐标就行了。
观察支付宝的折线图可以看到第一个数据点距离屏幕左侧和最后一个数据点距离屏幕右侧的宽度是相等的,我们将这个宽度定义为基准宽度mBaseWidth。
将相邻两个数据点之间的宽度定义为mItemWidth,仔细观察可以看出这个宽度大概为 3*mBaseWidth,因为折线图固定显示5个月份的数据,所以mBaseWidth值就确定了:
得到mBaseWidth值后各个数据点的x坐标也就确定了:
从支付宝折线图上可以看到月份的y坐标是固定的,数据点的y坐标是通过消费金额确定的,圆心y坐标和消费金额文字y坐标都依赖于数据点的y坐标。
下面我们就来分别确定月份的y坐标和数据点的y坐标。在绘制分析图中定义了几个参考变量,各变量的含义如下:
从绘制分析图可以看到月份的y坐标范围在区间 [3/4*mHeight, mHeight] 之间,只要以 3/4*mHeight 为基准值加上一个偏移量就可得到月份的y轴坐标,那么如何确定这个偏移量的大小呢?
首先通过下面的方法计算月份文字的高度:
计算出文字高度后选取 fontHeight * 3 / 2 作为偏移量,让月份文字的顶部距离 3/4*mWidth 基准线的高度刚好为 fontHeight。这个偏移量的值不是固定的,如果对最后绘制效果不满意,可以调整该值到自己满意的效果。
依然先定义一些控制参数:
先说数据点y坐标的确定方法,接下来再给出分析:
从计算公式可以看出数据点y坐标是通过mMaxLineHeight减去一个偏移量得到的,只需要确定偏移量的计算方法就可以了。
首先计算出当前月消费金额和最低消费金额的差值,然后用这个差值除以消费金额的极差mBillRange得到一个比例值,再用这个比例值去乘以mMaxLineSpace就是偏移值,然后用mMaxLineHeight减去偏移值就是数据点的y轴坐标。
数据点y坐标确定之后其它几个点的坐标也就确定了。圆心的y坐标就是数据点y坐标,消费金额文字y坐标通过数据点y坐标减去消费金额文字的 fontHeight * 3 / 2得到。
上面得到的仅仅是在账单金额已经出来情况下数据点的y坐标,那么月份的消费金额数还没出来时数据点y坐标该如何确定呢?因为只是为了演示效果,所以我采用下面的计算方法来得到未出账单月份的数据点y坐标。
确定绘制点的坐标之后,剩下的就是一些需要注意的细节,比如已出账单月份数据点处的圆是实心的,未出账单月份数据点处的圆是空心的。还有数据点之间的连线有虚线和实线之分,实线的颜色也有不同,绘制的时候注意这些细节就可以了。
顺带介绍一下Android中虚线绘制是通过设置画笔的路径效果来实现的:
关于DashPathEffect可以参考我的另一篇文章 Android PathEffect - DashPathEffect 了解一下。
折线图的目的是学习绘制自定义View,跟支付宝的实际逻辑肯定是完全不同的。另外目前项目并没有并没有在onMeasure进行特殊的绘制处理,等以后再优化改进。
项目地址: https://github.com/IvanRich/MonthBill
2017-06-20 增加onMeasure测量过程的处理 diff
⑧ android studio 怎么根据数据画折线图
你可以上github上找找相关的开源框架。Android studio上没有现成的控件能这么做,都是要自己重新写相关View。
⑨ Android除了MPAndroidChart这个是画柱状图折线图,还有其他第三方的吗
WilliamChart也不错,github上可以下载
⑩ Android 较为复杂的趋势图和扇形图
记录一次最近项目中使用到的趋势图和扇形图的实现经历
使用这个库实现的是扇形图,效果如下:
使用这个实现的是趋势图,效果如下: