一个朋友让我帮忙用饼图去展现一下一堆数据,我说行,后来他给我后,我看到是一堆貌似从什么仪器中导出的一堆使用分隔符分开的文本文档,使用excel打开后如下(为了保护隐私忽略了用字母和数字代替原来的内容:

大类

小类

数量

A

A1

396

A

A2

89

A

A3

3557

A

A4

214

A

A5

205

A

A6

3980

A

A7

6738

A

A8

6

A

A9

3826

A

A10

5

A

A11

3959

A

A12

12152

B

B1

43

B

B2

686

B

B3

16340

B

B4

128

B

B5

76

B

B6

1224

B

B7

2256

B

B8

14848

B

B9

457

B

B10

308

B

B11

4

B

B12

216

B

B13

3

B

B14

14

B

B15

322

C

C1

64

C

C2

1

C

C3

145

C

C4

16741

C

C5

15864

C

C6

606

C

C7

40

C

C8

22

C

C9

512

C

C10

1439

C

C11

263

C

C12

24

C

C13

12848

C

C14

20

C

C15

22

C

C16

3346

C

C17

4618

C

C18

376

C

C19

3944

C

C20

2450

看着这么一大堆数据,该如何处理呢?

大体思路,拿到这堆数据后,先对数据结构进行分析:大类有三类,而每个大类里又有若干小类,这样的话,我们可以把每个大类当做一个整体去做一个饼图,然后 把三个大类的饼图嵌套在一起,使用宽度标示大类的分布。

先拿出A类:

A1

396

A2

89

A3

3557

A4

214

A5

205

A6

3980

A7

6738

A8

6

A9

3826

A10

5

A11

3959

A12

12152

对这些数据绘制一张饼图如下:

安卓MPAndroidChart多层饼状图_数据

然后你会发现问题:A1\A2\A4\A5所占的比例不多,但是在图里要表现出来会破坏整个图的结构,显得极不协调,那我们就要在制作饼图前做一件事:数据有效性处理:把所占数量小于%8以下的小类统一命名为其他,数理后的数据如下:

A3

3557

A6

3980

A7

6738

A9

3826

A11

3959

A12

12152

other

915

绘制的图形如下:

安卓MPAndroidChart多层饼状图_饼图_02

由于最后是要三个图形放在一起,也就是达到如下效果:

安卓MPAndroidChart多层饼状图_置数据_03

这样的话我们需要把右面的红黄蓝色条留出来用来表示三个大类各占的比例:

对A类数据添加一个分类,让它占用10%的饼图(具体算法很简单,哈哈):处理后的数据如下:

aa

3909

A3

3557

A6

3980

A7

6738

A9

3826

A11

3959

A12

12152

other

915

添加了aa一列(要添加在首行)方便以后调整饼图方向:

然后更新饼图,打开设置数据系列格式的对话框,把饼图的方向转到90度,然后就好了:

安卓MPAndroidChart多层饼状图_数据_04

最后A类的就是这样的,同样的方法去处理B类和C类,但是要注意一点,B类和C类应该使用圆环图,而且一个比一个大。

 

这三个图都做好了之后,要使用一个软件把他们合并在一起,我选择的是ps

合并完后就是这样的:

安卓MPAndroidChart多层饼状图_置数据_05

其中右侧的红绿蓝三个色条的宽度刚好等于三个圆环的厚度,也等于ABC三类的大类比例(这个比例我们要在Ps中调整的)

 

但是通过这样制作的这个图,其实有一个问题,有没有人看出来问题在哪儿?