Python教程:使用Matplotlib模块画柱状图、饼形图、直方图

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资料请戳👇

相关推荐
AI科技星13 小时前
数术工坊 · 第四卷 橡皮泥江湖(拓扑学)【完整定稿】
c语言·开发语言·汇编·electron·概率论·拓扑学
张忠琳13 小时前
【Go 1.26.4】Golang Select 深度解析
开发语言·后端·golang
AC赳赳老秦15 小时前
OpenClaw+Power Apps 实战:自动生成 Power Apps 应用、连接 Excel 数据源
大数据·开发语言·python·serverless·excel·deepseek·openclaw
提笔了无痕15 小时前
如何用Go实现整套RAG流程
开发语言·后端·golang
(Charon)15 小时前
【C++ 面试高频基础:指针、引用、const、static、new/delete 总结】
java·开发语言
2601_9618752415 小时前
法考考试时间安排及科目|时间表|资料已整理
开发语言·c#·inverted-index·suffix-tree·sstable·r-tree·lsm-tree
BomanGe915 小时前
NSK紧凑型精密滚珠丝杠技术手册
经验分享·规格说明书
AI科技星15 小时前
数术工坊第八卷:算力革命
c语言·开发语言·网络·量子计算·agi
geovindu16 小时前
go: Generators Pattern
开发语言·后端·设计模式·golang·生成器模式
茉莉玫瑰花茶16 小时前
综合案例 - AI 智能租房助手 [ 5 ]
服务器·数据库·人工智能·python·ai