美文网首页
Android统计直方图的绘制

Android统计直方图的绘制

作者: 大校啊 | 来源:发表于2018-06-13 15:36 被阅读0次

最近自己在看自定义View相关的知识,这里把学习的路程记录一下
首先建一个bean对象,用于记录直方图的一些状态

public class Count {

    private String name;
    private float number;
    private int color;

    public Count(String name, float number, int color) {
        this.name = name;
        this.number = number;
        this.color = color;
    }

    public String getName() {
        return name;
    }

    public float getNumber() {
        return number;
    }

    public int getColor() {
        return color;
    }
}
public class MyView extends View {

    private String NAME = "统计直方图";

    private List<Count> counts;
    private Paint paint;
    private float startX;
    private float space;
    private float width;
    private float max;

    public MyView(Context context) {
        super(context);
        init();
    }

    public MyView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        counts = new ArrayList<>();
        Count count = new Count("一组", 7.0f, Color.GREEN);
        counts.add(count);
        count = new Count("二组", 9.0f, Color.GREEN);
        counts.add(count);
        count = new Count("三组", 11.0f, Color.GREEN);
        counts.add(count);
        count = new Count("四组", 13.0f, Color.GREEN);
        counts.add(count);
        max = Float.MIN_VALUE;
        for (Count c : counts) {
            max = Math.max(max, c.getNumber());
        }
        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setStrokeWidth(2);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        paint.setColor(Color.BLUE);
        paint.setTextSize(72);
        canvas.drawText(NAME, (canvas.getWidth() - paint.measureText(NAME)) / 2, canvas.getHeight() * 0.9f, paint);

        canvas.translate(canvas.getWidth() * 0.1f, canvas.getHeight() * 0.6f); // 将画图原点移动直方图的原点位置
        //直方图的宽度
        width = (canvas.getWidth() * 0.6f - 100) / counts.size() * 0.6f;
        //直方图之间的间距
        space = (canvas.getWidth() * 0.9f - 100) / counts.size() * 0.2f;

        paint.setStyle(Paint.Style.STROKE);
        canvas.drawLine(0, 0, canvas.getWidth() * 0.8f, 0, paint);   // 画x轴
        canvas.drawLine(0, 0, 0, -canvas.getHeight() * 0.6f, paint); // 画y轴

        startX = 0f;

        paint.setTextSize(36);
        paint.setStyle(Paint.Style.FILL);
        for (Count count : counts) {
            paint.setColor(count.getColor());
            canvas.drawRect(startX + space, -(count.getNumber() / max * canvas.getHeight() * 0.6f), startX + space + width, 0, paint);
            paint.setColor(Color.BLUE);
            canvas.drawText(count.getName(), startX + space + (width - paint.measureText(count.getName())) / 2, 40, paint);
            startX += width + space;
        }
    }
}

相关文章

  • Android统计直方图的绘制

    最近自己在看自定义View相关的知识,这里把学习的路程记录一下首先建一个bean对象,用于记录直方图的一些状态

  • 计算绘制图像灰度直方图

    OpenCV中分析绘制直方图并没有直接可用的函数,以下是绘制直方图统计的一种实现。paint_histogram....

  • R语言可视化(四):频率直方图绘制

    04.直方图绘制 清除当前环境中的变量 设置工作目录 hist函数绘制频率直方图 ggplot2包绘制直方图 gg...

  • bar

    matlab中函数bar绘制直方图中的应用函数bar(x)可以绘制直方图

  • Android Canvas绘制直方图

    近期学习到Android的Canvas绘制直方图,特此记录下来防止以后忘记。感谢抛物线老师的无私奉献精神。 这是完...

  • Android 自定义View简介

    概述 Android自定义View 其实就是:布局、绘制 、触摸反馈。在绘制的过程中,不管是直方图,饼图,还是其他...

  • 直方图的绘制

    直方图绘制,需要引入pygal库。本程序使用骰子打点的方式,随机出现数据,统计数据出现的个数。

  • 绘制直方图

    练习:绘制直方图

  • 50. 彩色直方图源码

    彩色直方图绘制步骤: 读取图片信息 各通道值计数与归一化 设置横纵坐标 绘制蓝绿红直方图 显示所有直方图 彩色直方...

  • 直方图

    一、 绘制直方图 1.1 代码 1.2 效果 二、全局直方图均衡 2.1 代码 1.2 效果 三、直方图匹配 3....

网友评论

      本文标题:Android统计直方图的绘制

      本文链接:https://www.haomeiwen.com/subject/fxbjeftx.html