Matplotlib绘制基本图表

Posted 桃陉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matplotlib绘制基本图表相关的知识,希望对你有一定的参考价值。



1.散点图

1.1函数scatter

函数格式
p l t . s c a t t e r ( x , y , s = N o n e , m a r k e r = N o n e , a l p h a . . . ) plt.scatter(x,y,s=None,marker=None,alpha...) plt.scatter(x,y,s=None,marker=None,alpha...)

参数说明

参数名称作用
x,yx轴和y轴对应数据(一一对应)
s点的大小,传入一个数值,所有点都为这个大小,也可以传入一维数组,表示每个点的大小。
c点的颜色,传入一维数组可以表示每个点的颜色
marker字符串类型,表示绘制的点的形状
alpha接收0-1的小数,表示点的透明度

1.2实例

实例1

import numpy as np
import matplotlib.pyplot as plt

# 设置Matplotlib正常显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False     # 正常显示负号

#生成对应的x、y值
x = np.linspace(1,10,10)
y1 = np.random.randint(1,3,10)
y2 = np.random.randint(6,8,10)

#绘制散点图
plt.figure()
plt.scatter(x,y1,marker='o')
plt.scatter(x,y2,marker='v')
plt.legend({'数据1','数据2'})
plt.xlabel("x值")
plt.ylabel("y值")
plt.show()

结果


实例2

import numpy as np
import matplotlib.pyplot as plt

#1024个点
n=1024
#随机生成点,0位平均数,1位方差,n为个数
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n)
T = np.arctan2(Y,X)#设置颜色

plt.scatter(X,Y,s=75,c=T,alpha=0.5)

#去掉坐标轴以及值
plt.xticks(())
plt.yticks(())

plt.show()

结果


2.柱状图

2.1函数bar

函数格式
p l t . b a r ( x , h e g i h t , w i d t h = N o n e , f a c e c o l o r , e d g e c o l o r , a l i g n = ′ c e n t e r ′ . . . ) plt.bar(x,hegiht,width=None,facecolor,edgecolor,align='center'...) plt.bar(x,hegiht,width=None,facecolor,edgecolor,align=center...)

参数说明

参数名称作用
x表示x轴的数据
height相当于y,表示每个x对应的高度
width接收0~1之间的float,指定柱状图宽度,默认为0.8
align取值为center或edge,默认为center,表示柱状图对齐x坐标
facecolor表示柱状图的填充颜色
edgecolor表示柱状图边框的颜色

3.2实例

实例1:正常柱状图

import numpy as np
import matplotlib.pyplot as plt

n = 12
X =np.arange(n)
# uniform为均匀分布,n个数从0.5到1取随机值,区间左闭右开
Y1 = (1-X/float(n))*np.random.uniform(0.5,1.0,n)

#绘制柱状图
plt.bar(X,+Y1,facecolor='#9999ff',edgecolor='white')

#在柱状图上标出具体高度height
for x,y in zip(X,Y1):
    plt.text(x,y+0.01,"%.2f"%y,ha='center',va='bottom')
    
plt.show()

结果

实例2:上下两个柱状图

import numpy as np
import matplotlib.pyplot as plt

n = 12
X =np.arange(n)
# uniform为均匀分布,n个数从0.5到1取随机值,区间左闭右开
Y1 = (1-X/float(n))*np.random.uniform(0.5,1.0,n)
Y2 = (1-X/float(n))*np.random.uniform(0.5,1.0,n)

#绘制柱状图
plt.bar(X,+Y1,facecolor='#9999ff',edgecolor='white')
plt.bar(X,-Y2,facecolor='#ff9999',edgecolor='white')
plt.xticks(())
plt.ylim(-1.2,1.2)

#在柱状图上标出具体高度height
for x,y in zip(X,Y1):
    plt.text(x,y+0.01,"%.2f"%y,ha='center',va='bottom')
for x,y in zip(X,Y2):
    plt.text(x,-y-0.01,"%.2f"%y,ha='center',va='top')
    
plt.show()

结果


3.等高线图

3.1函数contourf

函数格式
p l t . c o n t o u r f ( [ X , Y , ] , Z , [ l e v e l s ] , a l p h a , c m a p . . . ) plt.contourf([X,Y,],Z,[levels],alpha,cmap...) plt.contourf([X,Y,],Z,[levels],alpha,cmap...)
参数说明

参数名称作用
X,Y自变量,用来计算高度
Z各点求得的高度
alpha透明度,介于0~1之间
levels分割区域个数
cmap表示colormap

3.2实例

import numpy as np
import matplotlib.pyplot as plt

def f(x,y):
    #带入x,y,求得高度z
    return (1-x/2+x**5+y**3)*np.exp(x**2-y**2)

n = 256
x = np.linspace(-1.0,1.0,n)
y = np.linspace(-1.0,1.0,n)
X,Y = np.meshgrid(x,y) #将X,Y对应在网格里面,关联起来

#分割线条画出颜色,8表示分成10块,cmap表示colormap,此时为暖色调
plt.contourf(X,Y,f(X,Y),8,alpha=0.75,cmap=plt.cm.hot) 
C = plt.contour(X,Y,f(X,Y),8,colors='black',linewidth=.5) #画出线条
plt.clabel(C,inline=True,fontsize=10) #插入标签

plt.xticks(())
plt.yticks(())

plt.show()

结果

将cmap改为plt.cm.cool(冷色调):


4.饼图

4.1函数pie

函数格式
p l t . p i e ( x , e x p l o d e = N o n e , l a b e l s = N o n e , c o l o r s = N o n e , a u t o p c t = N o n e , p c t d i s t a n c e = 0.6 , l a b e l d i s t a n c e = 1.1 , r a d i u s = 1 ) plt.pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,labeldistance=1.1,radius=1) plt.pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,labeldistance=1.1,radius=1)

参数说明

参数名称作用
x列表,表示绘制饼图的数据
explode指定各项距离圆心的距离
labels指定每一项的名称
colors饼图颜色
autopct指定数值的显示方式
pctdistance每一项的比例autopct和距离圆心的半径,默认为0.6
labeldistance指定每一项的名称label和距离圆心的半径,默认为1.1
radius表示饼图的半径,默认为1

4.2实例

import numpy as np
import matplotlib.pyplot as plt

# 设置Matplotlib正常显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False # 正常显示负号

x = [35,20]

plt.figure()
label = ['城镇就业','乡村就业']
explode = [0.01,0.1]

plt.pie(x,explode=explode,labels=label,autopct='%1.2f%%')
plt.title('2021年城镇和乡村就业人员情况表')
plt.legend()

plt.show()

结果


5.直方图

5.1函数hist

函数格式
p l t . h i s t ( x , b i n s = N o n e , r a n g e = N o n e , h i s t t y p e = ′ b a r , a l i g n = ′ m i d ′ , r w i d t h = N o n e , c o l o r = N o n e , e d g e c o l o r = , a l p h a , n o r m e d = N o n e ) plt.hist(x,bins=None,range=None,histtype='bar,align='mid',rwidth=None,color=None,edgecolor=,alpha,normed=None) plt.hist(x,bins=None,range=None,histtype=bar,align=mid,rwidth=None,color=None,edgecoloMatplotlib模块 |图表绘制工具

图表绘制工具--Matplotlib 2

matplotlib基本线图绘制

如何修改此代码,以便我不会每次都重新绘制图表,matplotlib

5 matplotlib-绘制精美的图表

Python绘制图表matplotlib