Matplotlib是Python中一个用于数据可视化的库,它提供了用于绘制各种静态、动态、交互式的图形的工具和API。Matplotlib可用于以可视化的形式展示数据和模型的结果,包括折线图、散点图、柱状图和分布图等。它同时具有高度的可定制性,可以自定义图形的样式、标签、颜色和字体等。
Matplotlib具有简单易用的API,可以快速绘制各种类型的图表。Matplotlib的底层绘图库是NumPy库中的ndarray,因此可以与NumPy和SciPy等Python科学计算库一起使用。Matplotlib也可以与图形用户界面库结合使用,从而提供交互性图形的绘制。它是Python中最常用的绘图库之一。
01 添加属性
#1.导入模块
import matplotlib.pyplot as plt
import numpy as np
#2.创建x
x=np.linspace(0,10,100)
#3.给plot方法添加参数label
plt.plot(x,x+0,'--g',label='--g')
plt.plot(x,x+1,'-.r',label='-.r')
plt.plot(x,x+2,':b',label=':b')
plt.plot(x,x+3,'.k',label='.k')
plt.plot(x,x+4,',c',label=',c')
plt.plot(x,x+5,'*y',label='*y')
# 使用legend()图例,左上角upper left fancybox边框 framealpha透明度 shadow阴影 borderpad边框宽度
plt.legend(loc='upper right',fancybox=True,framealpha=0.5,shadow=True,borderpad=1) #默认的位置在左上角upper left 可以通过loc进行修改
plt.show()
02柱状图的画法
#导入模块
import matplotlib.pyplot as plt
import numpy as np
#创建x ,y 表示x年份 y表示年份对应的销量
x=[2017,2019,2021,2023]
x_label=['2020年','2021年','2022年','2023年']
y=[1000,3000,4000,5000]
#调用bar函数绘制柱状图
#x的距离要比width设置单位要大(2019-2017)>1
plt.bar(x,y,width=1)#width修改柱的宽度
#修改中文乱码
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
#修改x坐标的值
plt.xticks(x,x_label)
#给x坐标y坐标添加名称
plt.xlabel('年份')
plt.ylabel('销量')
#添加标题title
plt.title('这是一个年份销量图表')
plt.show()
03bar和barh函数的使用
04红绿柱子
#导入模块
import matplotlib.pyplot as plt
import numpy as np
#生成x y
np.random.seed(0)
x=np.arange(15)
y=np.random.randint(-20,20,15)
#添加颜色
v_bar=plt.bar(x,y,color='red')
#对y值大于0设置为蓝色 小于0的柱设置为绿色
for bar,height in zip(v_bar,y):
if height<0:
bar.set(color='green')
plt.show()
05画多个柱子
#导入模块
import matplotlib.pyplot as plt
import numpy as np
#准备数据
#三部电影的名称
movie_names=['肖申克的救赎','霸王别姬','泰坦尼克号']
#3天内票房数
num1=[7858,5213,6573]
num2=[9453,8040,9080]
num3=[7348,6315,8830]
x=np.arange(len(movie_names))
#绘制柱状图
width=0.3
plt.bar(x,num1,alpha=0.5,width=width,label=movie_names[0])
plt.bar([i+width for i in x],num2,alpha=0.5,width=width,label=movie_names[1])
plt.bar([i+2*width for i in x],num3,alpha=0.5,width=width,label=movie_names[2])
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
#设置x坐标的值 第1天 第2天 第3天
x_label=['第{}天'.format(i+1) for i in x]
# print(x_label)
plt.xticks([i+width for i in x],x_label)
#添加ylabel
plt.ylabel('票房数')
#添加图例
plt.legend()
#添加标题
plt.title('3天3部电影票房数')
plt.show()
06饼状图
#导入模块
import matplotlib.pyplot as plt
import numpy as np
#准备男、女的人数及比例
man=74735
woman=62169
man_perc=man/(woman+man)
woman_perc=woman/(woman+man)
#添加名称
labels=['男','女']
#添加颜色
colors=['blue','red']
#绘制饼状图 pie
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
# labels 名称 colors:颜色,explode=分裂 autopct显示百分比
paches,texts,autotexts=plt.pie([man_perc,woman_perc],labels=labels,colors=colors,explode=(0,0.05),autopct='%0.1f%%')
#设置饼状图中的字体颜色
for text in autotexts:
text.set_color('white')
#设置字体大小
for text in texts+autotexts:
text.set_fontsize(26)
plt.show()
07直方图
#导入模块
import matplotlib.pyplot as plt
import numpy as np
#使用np.random.normal()指定期望和均值的正太分布
x=np.random.normal(0,0.8,500)
y=np.random.normal(-5,1,500)
z=np.random.normal(3,2,500)
kwargs=dict(bins=100,alpha=0.5) #alpha是透明度
plt.hist(x,**kwargs)
plt.hist(y,**kwargs)
plt.hist(z,**kwargs)
plt.show()
更多Python资料请戳👇