python实现直方图、条形图、折线图、饼图(参数详情)

,注意:条形图是用条形的长度表示各类别频数的多少,其宽度(表示类别)则是固定的; 直方图是用面积表示各组频数的多少

1、直方图hist()函数

hist()函数: 直方图的参数只有一个X
参数说明: normed=True:将值进行归一化处理,形成概率密度,默认值为False color: 修改颜色
设置直方图的方向:
orientation=‘horizontal’: 水平方向
默认orientation=‘vertical’ 垂直方向

#-- coding:UTF-8 --
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

#直方图
x=np.random.randint(0,10,10)
plt.hist(x,density=True,orientation='vertical',color='b')#垂直方向,horizencal:水平
plt.show()

运行如下:
python实现直方图、条形图、折线图、饼图(参数详情)_第1张图片

2、条形图bar(),barh()

bar(),barh()语法如下:
对象 .bar(left, height, idth=0.8, bottom=None, hold=None, data=None, **kwargs)

python实现直方图、条形图、折线图、饼图(参数详情)_第2张图片
2.1

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,5,5)
y = np.random.randint(0,20,size=5)
axes = plt.subplot(1,2,1)#1x2的区域,一行两列
axes.bar(x,y)#垂直条形图
axes2 = plt.subplot(1,2,2)
axes2.barh(x,y)#水平条形图
plt.show()

运行如下:
python实现直方图、条形图、折线图、饼图(参数详情)_第3张图片
2.2添加标题,x轴,y轴标签
把以上对应代码改为:

'''条形图 bar()、barh()(条形图有两个参数x,y)'''
x = np.linspace(0,5,5)
y = np.random.randint(0,20,size=5)
'''垂直条形图'''
axes = plt.subplot(2,1,1)#2x1的区域,两行一列
axes.bar(x,y)
axes.set_title('one')
axes.set_xlabel('x')
axes.set_ylabel('y')
'''水平条形图'''
axes2 = plt.subplot(2,1,2)
axes2.barh(x,y)
axes2.set_title('tow')
plt.show()

运行结果:
python实现直方图、条形图、折线图、饼图(参数详情)_第4张图片

2.3多个子图

import numpy as np
x=np.linspace(0,5,5)
y=np.random.randint(0,20,size=5)
axes=plt.subplot(2,2,1)
axes.bar(x,y,color='b')#垂直

axes1=plt.subplot(2,2,2)
axes1.barh(x,y,color='r')#水平

axes2=plt.subplot(2,2,3)
axes2.bar(x,y,color='g')

axes3=plt.subplot(2,2,4)
axes3.barh(x,y,color='b')
plt.show()

运行如下:
python实现直方图、条形图、折线图、饼图(参数详情)_第5张图片
解释:subplot(x,y,z):
x,y组成x行y列的图形区域,z是代表位置,从左上角开始到右下角

plt.subplot(2,2,1)#2x2,两行两列,对应第一个图,左上角
plt.subplot(2,2,2)#2x2,对应第二个图,右上角
plt.subplot(2,2,3)#2x2,对应第三个图,左下角
plt.subplot(2,2,4)#2x2,对应第四个图,右下角
plt.show()

运行结果:
python实现直方图、条形图、折线图、饼图(参数详情)_第6张图片

import matplotlib.pyplot as plt
plt.subplot(3,2,1)
plt.subplot(3,2,2)
plt.subplot(3,2,3)
plt.subplot(3,2,4)
plt.subplot(3,2,5)
plt.subplot(3,2,6)
plt.show()

运行结果:
python实现直方图、条形图、折线图、饼图(参数详情)_第7张图片

3、折线图plot()

python实现直方图、条形图、折线图、饼图(参数详情)_第8张图片

import matplotlib.pyplot as plt
y=np.random.randint(0,50,10)
x=range(len(y))
y1=np.random.randint(0,50,10)
x1=range(len(y1))

y2=np.random.randint(0,50,10)
x2=range(len(y1))

plt.figure()
plt.plot(x,y,'r',label='y')

# 在绘制时设置lable(设置线条的类型), 逗号是必须的
#l1,=plt.plot(x,y,'r',label='parabola',linewidth = 1.0, linestyle = '--')
#plt.plot(x,y,'r--',label='y',linewidth = 1.0)
#l2,=plt.plot(x1,y1,'b',label='line')

plt.plot(x1,y1,'b',label='y1')

plt.plot(x2,y2,'g',label='y2')
plt.xlabel('x')
plt.ylabel('y')
plt.title('one')
#显示图例,当显示多个图例时,在plt.plot(),添加label参数才显示对应的图例
plt.legend(loc='upper right')
#或者plt.legend(handles =[l1,l2],labels =['y','y1'],loc='upper right')#显示图例
#或者plt.legend[l1,l2],['y','y1'],loc='upper right')#显示图例
plt.show()

运行如下:
python实现直方图、条形图、折线图、饼图(参数详情)_第9张图片
legend()的参数中,loc显示的位置:

‘best’ : 0, (only implemented for axes legends)(自适应方式)
‘upper right’ : 1,
‘upper left’ : 2,
‘lower left’ : 3,
‘lower right’ : 4,
‘right’ : 5,
‘center left’ : 6,
‘center right’ : 7,
‘lower center’ : 8,
‘upper center’ : 9,
‘center’ : 10,

4、饼图**** pie()函数

pie() 参数说明:
1)labels=[’’] 设置相对应数据的标签
2) labeldistance:设置标签距离圆心的距离:labeldistance:值越大离图就越远
3)autopct=’%1.1f%%’ : 设置饼图上显示数据 (注意:最外面有两个%转化为百分比,里面1.1f%即保留一位小数加%,1.2f 即保留两位小数 )
4)pctdistance : 设置比例值文字距离圆心的距离,值越大离圆心就越远
5) explode = () : 参数设置每一块顶点距离圆心的长度里面的值的数量和数据是相同的数量,不想设置时直接给个0(注:用小括号括起来 )
6) colors 参数设置每一块的颜色
7) shadow : 设置是否绘制阴影
8) startangle : 设置饼图旋转的度数 (逆时针旋转)

import matplotlib.pyplot as plt
import numpy as np
p=np.array([0.6,0.2,0.1])
axes=plt.subplot(1,2,1)
axes.pie(p,labels=['fruit','foot','other'],autopct='%1.1f%%',pctdistance=0.8,startangle=60)
axes.axis('equal')#让饼图更圆
axes.set_title('one')

p1=np.array([0.6,0.15,0.1,0.15])
axes1=plt.subplot(1,2,2)
axes1.pie(p1,labels=['china','USA','UK','japan'],labeldistance=1.1,autopct='%1.2f%%',explode=(0.1,0.1,0.1,0.1),shadow=True)
axes1.axis('equal')
axes1.set_title('two')
plt.show()

运行代码如下:
python实现直方图、条形图、折线图、饼图(参数详情)_第10张图片

你可能感兴趣的:(python)