matplotlib的几个图形

在收集到数据的时候,常常需要用图形的形式显示出来,matplotlib提供了强大的功能。下面自己总结几个图形的用法,已备后面查看。

1. 折线图

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline #用于jupyter 中显示图形用的
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示问题
mpl.rcParams['axes.unicode_minus'] = False #解决中文显示问题
x = [2011,2012,2013,2014,2015]
y = [2011,2012,2013,2014,2015]
# plt.figure(num=1, figsize=(2,2)) #指定figure(num, figsize)的编号num并figsize参数指定figure的大小

plt.figure()
plt.subplot(221)#221分别表示2行2列第一个
plt.title("人口普查")#设置标题
plt.plot(x,y,label= "this is a")
# plt.xlim(2000,2016)

plt.legend(loc="center")
plt.xlabel("年份")
plt.ylabel("人数")
plt.xticks([2011,2012,2013,2014,2015], ['第1年','第2年','第3年','第4年','第5年'])
ax = plt.gca()
ax.spines['right'].set_color('None')
ax.spines['top'].set_color('None')
plt.subplot(222)
plt.title("人口普查1")
plt.plot(x,y,label= "this is b")
plt.legend(loc="center")
plt.xlabel("年份")
plt.ylabel("人数")
plt.xticks([2011,2012,2013,2014,2015], ['第1年','第2年','第3年','第4年','第5年'])#设置刻度
ax = plt.gca()
ax.spines['right'].set_color('None')#去除边款
ax.spines['top'].set_color('None')
plt.savefig("a.png")#保存图片 支持png jpg 等具体查看文档
plt.savefig("a.jpg")
plt.show()

2. 柱状图

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示问题
mpl.rcParams['axes.unicode_minus'] = False #解决中文显示问题
plt.figure()
beijing=[200, 900, 100, 20, 1200]
shanghai =[190,500, 103, 30, 1100]
x = np.array([2011,2012, 2013,2014,2015])
plt.bar(x,beijing,width =0.4,label= "beijig", align='edge')##柱状图
plt.bar(x-0.2,shanghai,width =0.4, label="shanghai")
plt.legend()
plt.ylabel("GDP")
plt.xlabel("年份")
plt.show()

3. 饼图

from matplotlib import pyplot as plt 

#调节图形大小,宽,高
plt.figure(figsize=(6,9))
#定义饼状图的标签,标签是列表
labels = [u'第一部分',u'第二部分',u'第三部分']
#每个标签占多大,会自动去算百分比
sizes = [60,30,10]
colors = ['red','yellowgreen','lightskyblue']
#将某部分爆炸出来, 使用括号,将第一块分割出来,数值的大小是分割出来的与其他两块的间隙
explode = (0.05,0,0)

patches,l_text,p_text = plt.pie(sizes,explode=explode,labels=labels,colors=colors,
                               labeldistance = 1.1,autopct = '%3.1f%%',shadow = False,
                               startangle = 90,pctdistance = 0.6)

#labeldistance,文本的位置离远点有多远,1.1指1.1倍半径的位置
#autopct,圆里面的文本格式,%3.1f%%表示小数有三位,整数有一位的浮点数
#shadow,饼是否有阴影
#startangle,起始角度,0,表示从0开始逆时针转,为第一块。一般选择从90度开始比较好看
#pctdistance,百分比的text离圆心的距离
#patches, l_texts, p_texts,为了得到饼图的返回值,p_texts饼图内部文本的,l_texts饼图外label的文本

#改变文本的大小
#方法是把每一个text遍历。调用set_size方法设置它的属性
for t in l_text:
   t.set_size=(30)
for t in p_text:
   t.set_size=(20)
plt.axis('equal')
plt.legend()
plt.show()

4. 直方图

 import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示问题
mpl.rcParams['axes.unicode_minus'] = False #解决中文显示问题
#直方图 hist(x, bins,weights,bottom)
#x 数据
#bins数据分组数
#weights 每个元素对bins高度的贡献值
#bottom 底部从多少开始
#histtype 类型 默认bar
data = np.random.randn(1000)
weights = np.ones(1000)+1
plt.hist(data,bins=80,weights =weights, bottom = 40, histtype = 'step',orientation ='horizontal')
plt.show()

5.散点图

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示问题
mpl.rcParams['axes.unicode_minus'] = False #解决中文显示问题
#散点图
#scatter
x = np.random.randn(10)
y = np.random.randn(10)
z = np.array([1,6,7,8,2,3,16,8,9,6])*100 #大小  
plt.scatter(x,y,z,c= np.random.randint(0, 255, 10), alpha=0.5)#alpha 透明度 c颜色
plt.show()

一些说明后面有时间的时候补上,目前就是一个粗糙的版本

猜你喜欢

转载自blog.csdn.net/weixin_35389463/article/details/83478657