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

相关推荐
老白干13 小时前
jjwt 0.9.1 在 JDK 11+ 上的两个“坑”与完整解决方案
java·python·log4j
月光光心慌慌。19 小时前
企服商家智能体与自动化服务怎么选?2026防坑与选型指南
程序人生
笨鸟先飞,勤能补拙20 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
微学AI20 小时前
一根针指向所有方向:挂谷猜想对 LLM Agent 技能-记忆架构的启示
开发语言·人工智能·架构·挂谷猜想
IT小白杨20 小时前
从环境制备到自动化工作流:多账号运营的工程化架构拆解
java·经验分享·自动化·安全架构·指纹浏览器
长和信泰光伏储能21 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
豆瓣鸡21 小时前
算法日记 - Day3
java·开发语言·算法
浦信仿真大讲堂21 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
韭菜炒鸡肝天21 小时前
VTK开发笔记(一):VTK介绍,Qt..+VSx+VTK.编译
开发语言·笔记·qt
Gu Gu Study1 天前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python