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

相关推荐
tanyongxi6618 分钟前
C++ 特殊类设计与单例模式解析
java·开发语言·数据结构·c++·算法·单例模式
遗憾皆是温柔20 分钟前
24. 什么是不可变对象,好处是什么
java·开发语言·面试·学习方法
wearegogog12341 分钟前
C语言中的输入输出函数:构建程序交互的基石
c语言·开发语言·交互
Fine姐44 分钟前
The Network Link Layer: 无线传感器中Delay Tolerant Networks – DTNs 延迟容忍网络
开发语言·网络·php·硬件架构
HAPPY酷1 小时前
给纯小白的Python操作 PDF 笔记
开发语言·python·pdf
liulilittle1 小时前
BFS寻路算法解析与实现
开发语言·c++·算法·宽度优先·寻路算法·寻路
yaya_1921 小时前
想要PDF翻译保留格式?用对工具是关键
经验分享
阿珊和她的猫2 小时前
autofit.js: 自动调整HTML元素大小的JavaScript库
开发语言·javascript·html
喜欢吃燃面2 小时前
C++算法竞赛:位运算
开发语言·c++·学习·算法
传奇开心果编程2 小时前
【传奇开心果系列】Flet框架实现的家庭记账本示例自定义模板
python·学习·ui·前端框架·自动化