使用python绘制常用的图表

使用python绘制常用的图表

本文介绍如果使用python汇总常用的图表,与Excel的点选操作相比,用python绘制图表显得比较比较繁琐,尤其提现在对原始数据的处理上。但两者在绘制图表过程中的思路大致相同,Excel中能完成的工作python大多也能做到。为了更清晰的说明使用python绘制图表的过程,我们在汇总图表的代码中进行注解,说明每一行代码的具体作用。并在文章的最后给出了自定义字体和图表配色的对应表。

准备工作

?


1

2

3

4

5

import numpy as np

import pandas as pd

#导入图表库以进行图表绘制

import matplotlib.pyplot as plt

loandata=pd.DataFrame(pd.read_excel(‘loan_data.xlsx‘))

折线图

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

#设置日期字段issue_d为loandata数据表索引字段

loandata = loandata.set_index(‘issue_d‘)

#按月对贷款金额loan_amnt求均值,以0填充空值

loan_plot=loandata[‘loan_amnt‘].resample(‘M‘).fillna(0)

#图表字体为华文细黑,字号为15

plt.rc(‘font‘, family=‘STXihei‘, size=15)

#创建一个一维数组赋值给a

a=np.array([1,2,3,4,5,6,7,8,9,10,11,12])

#创建折线图,数据源为按月贷款均值,标记点,标记线样式,线条宽度,标记点颜色和透明度

plt.plot(loan_plot,‘g^‘,loan_plot,‘g-‘,color=‘#99CC01‘,linewidth=3,markeredgewidth=3,markeredgecolor=‘#99CC01‘,alpha=0.8)

#添加x轴标签

plt.xlabel(‘月份‘)

#添加y周标签

plt.ylabel(‘贷款金额‘)

#添加图表标题

plt.title(‘分月贷款金额分布‘)

#添加图表网格线,设置网格线颜色,线形,宽度和透明度

plt.grid( color=‘#95a5a6‘,linestyle=‘--‘, linewidth=1 ,axis=‘y‘,alpha=0.4)

#设置数据分类名称

plt.xticks(a, (‘1月‘,‘2月‘,‘3月‘,‘4月‘,‘5月‘,‘6月‘,‘7月‘,‘8月‘,‘9月‘,‘10月‘,‘11月‘,‘12月‘) )

#输出图表

plt.show()

柱状图

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

#按用户等级grade字段对贷款金额进行求和汇总

loan_grade=loandata.groupby(‘grade‘)[‘loan_amnt‘].agg(sum)

#图表字体为华文细黑,字号为15

plt.rc(‘font‘, family=‘STXihei‘, size=15)

#创建一个一维数组赋值给a

a=np.array([1,2,3,4,5,6])

#创建柱状图,数据源为按用户等级汇总的贷款金额,设置颜色,透明度和外边框颜色

plt.bar([1,2,3,4,5,6],loan_grade,color=‘#99CC01‘,alpha=0.8,align=‘center‘,edgecolor=‘white‘)

#设置x轴标签

plt.xlabel(‘用户等级‘)

#设置y周标签

plt.ylabel(‘贷款金额‘)

#设置图表标题

plt.title(‘不同用户等级的贷款金额分布‘)

#设置图例的文字和在图表中的位置

plt.legend([‘贷款金额‘], loc=‘upper right‘)

#设置背景网格线的颜色,样式,尺寸和透明度

plt.grid(color=‘#95a5a6‘,linestyle=‘--‘, linewidth=1,axis=‘y‘,alpha=0.4)

#设置数据分类名称

plt.xticks(a,(‘A级‘,‘B级‘,‘C级‘,‘D级‘,‘E级‘,‘F级‘))

#显示图表

plt.show()

条形图

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#图表字体为华文细黑,字号为15

plt.rc(‘font‘, family=‘STXihei‘, size=15)

#创建一个一维数组赋值给a

a=np.array([1,2,3,4,5,6])

#创建条形图,数据源为分等级贷款金额汇总,设置颜色,透明度和图表边框

plt.barh([1,2,3,4,5,6],loan_grade,color=‘#99CC01‘,alpha=0.8,align=‘center‘,edgecolor=‘white‘)

#添加x轴标题

plt.xlabel(‘贷款金额‘)

#添加y轴标题

plt.ylabel(‘用户等级‘)

#添加图表标题

plt.title(‘不同用户等级的贷款金额分布‘)

#添加图例,并设置在图表中的显示位置

plt.legend([‘贷款金额‘], loc=‘upper right‘)

#设置背景网格线的颜色,样式,尺寸和透明度

plt.grid(color=‘#95a5a6‘,linestyle=‘--‘, linewidth=1,axis=‘y‘,alpha=0.4)

#设置数据分类名称

plt.yticks(a,(‘A级‘,‘B级‘,‘C级‘,‘D级‘,‘E级‘,‘F级‘))

#显示图表

plt.show()

饼图

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

#图表字体为华文细黑,字号为15

plt.rc(‘font‘, family=‘STXihei‘, size=15)

#设置饼图中每个数据分类的颜色

colors = ["#99CC01","#FFFF01","#0000FE","#FE0000","#A6A6A6","#D9E021"]

#设置饼图中每个数据分类的名称

name=[‘A级‘, ‘B级‘, ‘C级‘, ‘D级‘, ‘E级‘,‘F级‘]

#创建饼图,设置分类标签,颜色和图表起始位置等

plt.pie(loan_grade,labels=name,colors=colors,explode=(0, 0, 0.15, 0, 0, 0),startangle=60,autopct=‘%1.1f%%‘)

#添加图表标题

plt.title(‘不同用户等级的贷款金额占比‘)

#添加图例,并设置显示位置

plt.legend([‘A级‘,‘B级‘,‘C级‘,‘D级‘,‘E级‘,‘F级‘], loc=‘upper left‘)

#显示图表

plt.show()

散点图

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#按月汇总贷款金额,以0填充空值

loan_x=loandata[‘loan_amnt‘].resample(‘M‘,how=sum).fillna(0)

#按月汇总利息金额,以0填充空值

loan_y=loandata[‘total_rec_int‘].resample(‘M‘,how=sum).fillna(0)

#图表字体为华文细黑,字号为15

plt.rc(‘font‘, family=‘STXihei‘, size=15)

#创建散点图,贷款金额为x,利息金额为y,设置颜色,标记点样式和透明度等

plt.scatter(loan_x,loan_y,60,color=‘white‘,marker=‘o‘,edgecolors=‘#0D8ECF‘,linewidth=3,alpha=0.8)

#添加x轴标题

plt.xlabel(‘贷款金额‘)

#添加y轴标题

plt.ylabel(‘利息收入‘)

#添加图表标题

plt.title(‘贷款金额与利息收入‘)

#设置背景网格线的颜色,样式,尺寸和透明度

plt.grid(color=‘#95a5a6‘,linestyle=‘--‘, linewidth=1,axis=‘both‘,alpha=0.4)

#显示图表

plt.show()

气泡图

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#按月汇总贷款金额及利息

loan_x=loandata[‘loan_amnt‘].resample(‘M‘,how=sum).fillna(0)

loan_y=loandata[‘total_rec_int‘].resample(‘M‘,how=sum).fillna(0)

loan_z=loandata[‘total_rec_int‘].resample(‘M‘,how=sum).fillna(0)

#图表字体为华文细黑,字号为15

plt.rc(‘font‘, family=‘STXihei‘, size=15)

#设置气泡图颜色

colors = ["#99CC01","#FFFF01","#0000FE","#FE0000","#A6A6A6","#D9E021",‘#FFF16E‘,‘#0D8ECF‘,‘#FA4D3D‘,‘#D2D2D2‘,‘#FFDE45‘,‘#9b59b6‘]

#创建气泡图贷款金额为x,利息金额为y,同时设置利息金额为气泡大小,并设置颜色透明度等。

plt.scatter(loan_x,loan_y,s=loan_z,color=colors,alpha=0.6)

#添加x轴标题

plt.xlabel(‘贷款金额‘)

#添加y轴标题

plt.ylabel(‘利息收入‘)

#添加图表标题

plt.title(‘贷款金额与利息收入‘)

#设置背景网格线的颜色,样式,尺寸和透明度

plt.grid(color=‘#95a5a6‘,linestyle=‘--‘, linewidth=1,axis=‘both‘,alpha=0.4)

#显示图表

plt.show()

箱线图

?


1

2

3

4

5

6

7

8

9

10

11

12

#图表字体为华文细黑,字号为15

plt.rc(‘font‘, family=‘STXihei‘, size=15)

#创建箱线图,数据源为贷款来源,设置横向显示

plt.boxplot(loandata[‘loan_amnt‘],1,‘rs‘,vert=False)

#添加x轴标题

plt.xlabel(‘贷款金额‘)

#添加图表标题

plt.title(‘贷款金额分布‘)

#设置背景网格线的颜色,样式,尺寸和透明度

plt.grid(color=‘#95a5a6‘,linestyle=‘--‘, linewidth=1,axis=‘both‘,alpha=0.4)

#显示图表

plt.show()

直方图

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

#图表字体为华文细黑,字号为15

plt.rc(‘font‘, family=‘STXihei‘, size=15)

#创建直方图,数据源为贷款金额,将数据分为8等份显示,设置颜色和显示方式,透明度等

plt.hist(loandata[‘loan_amnt‘],8,normed=1, histtype=‘stepfilled‘,facecolor=‘#99CC01‘, rwidth=0.9,alpha=0.6,edgecolor=‘white‘)

#添加x轴标题

plt.xlabel(‘贷款金额‘)

#添加y轴标题

plt.ylabel(‘概率‘)

#添加图表标题

plt.title(‘贷款金额概率密度‘)

#设置背景网格线的颜色,样式,尺寸和透明度

plt.grid(color=‘#95a5a6‘,linestyle=‘--‘, linewidth=1,axis=‘y‘,alpha=0.4)

#显示图表

plt.show()

自定义字体及配色

图表中所使用的字体,可以使用下面的字体名称替换family=后面的内容以改变图表中所显示的字体。

图表中的颜色,可以直接使用颜色名称,也可以使用简称来设置图表中使用的颜色,本文中没有使用默认的颜色,而是使用了自定义颜色。

自定义颜色的色号,本文中使用的是Hex色号,下面给出了Hex和RGB的对应关系,以及相应的颜色。可以使用下面的Hex色号替换本文中图表的颜色。

时间: 2024-10-11 04:48:58

使用python绘制常用的图表的相关文章

Python绘制PDF文件~超简单的小程序

Python绘制PDF文件 项目简介 这次项目很简单,本次项目课,代码不超过40行,主要是使用 urllib和reportlab模块,来生成一个pdf文件. reportlab官方文档 http://www.reportlab.com/docs/reportlab-userguide.pdf 我们看看这个网页上的原数据: http://www.swpc.noaa.gov/ftpdir/weekly/Predict.txt 代码: #-*- coding: utf-8 -*- # 1. 用于下载原

python MySQLdb 常用操作

我采用的是MySQLdb操作的MYSQL数据库.先来一个简单的例子吧: import MySQLdb try:     conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',port=3306)     cur=conn.cursor()     cur.execute('select * from user')     cur.close()     conn.close() except MySQL

python编程常用模板总结

在我们编程时,有一些代码是固定的,例如Socket连接的代码,读取文件内容的代码,一般情况下我都是到网上搜一下然后直接粘贴下来改一改,当然如果你能自己记住所有的代码那更厉害,但是自己写毕竟不如粘贴来的快,而且自己写的代码还要测试,而一段经过测试的代码则可以多次使用,所以这里我就自己总结了一下python中常用的编程模板,如果还有哪些漏掉了请大家及时补充哈. 一.读写文件 1.读文件 (1).一次性读取全部内容 filepath='D:/data.txt' #文件路径 with open(file

使用python绘制词云

最近在忙考试的事情,没什么时间敲代码,一个月也没几天看代码,最近看到可视化的词云,看到网上也很多这样的工具, 但是都不怎么完美,有些不支持中文,有的中文词频统计得莫名其妙.有的不支持自定义形状.所有的都不能自定义颜色 于是网上找了一下,决定用python绘制词云,主要用到的是wordcloud库,安装只需要pip isntall wordcloud就行, 数据用的是酒店评论的数据,代码如下: # -*- coding: utf-8 -*- import matplotlib.pyplot as

Python文件常用的三个变量

1 '''Python文件常用的三个变量 2 __doc__.__name__.__file__ 3 4 __doc__——用来显示文件的注释,文件的注释都是写在文件的开头, 5 以""" doc """标注的内容.可以直接调用.也可以查看其他文件的注释, 6 如导入了一个Queue模块,可以用print Queue.__doc__来查看 7 8 __name__——用来检查是否是主文件的一个重要方法,比如是主动执行的此文件, 9 那么值就是'_

python中常用的字典内建函数

1.len(mapping)        返回映射的长度(键-值对的个数) 2.hash(obj)              返回obj的哈希值 >>> myDict = {'name':'earth', 'port':'80'} >>> len(myDict) 2 >>> hash('name') 15034981 3.dict.copy()            返回字典(浅复制)的一个副本 >>> myDict = {'nam

Python第三方常用工具、库、框架等

Python ImagingLibrary(PIL):它提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换.打印和显示.还能进行一些图形效果的处理,如图形的放大.缩小和旋转等.是用户进行图象处理的强有力工具. http://www.pythonware.com/products/pil/ matplotlib:一个Python的2D绘图库. http://matplotlib.org/ Pmw(Pythonmegawidgets):它是超级GUI组件集----一个利

Python 使用pycha画图表

事前准备: 下载并安装: Cairo: http://www.lfd.uci.edu/~gohlke/pythonlibs/bux9zozk/pycairo-1.10.0.win32-py2.7.exe Pycha: https://bitbucket.org/lgs/pycha/get/e3e270a0e7ae.zip 简单的程序示例如下(包括饼图和直方图): #!/usr/bin/env python # -*-coding:utf-8-*- import cairo[A1] import

python中常用的列表类型内建函数

1.list.append(obj)         向列表中添加一个对象obj list = ['apple', 'pear', 'orange'] >>> list.append('apple') >>> list ['apple', 'pear', 'orange', 'apple'] 2.list.count(obj)             返回一个对象obj在列表中出现的次数 >>> list.count('apple') 2 3.list