【新手0基础7天学会python可视化第一天:matplotlib】内附详细代码

开始

大家好呀!这是一篇为新手小宝宝们写的可视化教程,主要包括matplotlib、seaborn、pyecharts等常用的可视化库,那我们就开始今天的学习吧!|ू・ω・` )

matplotlib简介

matplotlib 是 Python 里极为常用的绘图库,它能够创建各式各样的静态、动态及交互式可视化图表。最早由 John D. Hunter 在 2003 年发起,其设计初衷是在 Python 环境下实现类似于 MATLAB 的绘图功能。经过多年的发展,它已经成为 Python 数据科学和可视化领域的核心工具之一,并且拥有一个活跃的开发者社区,不断为其添加新功能和修复问题。
如果你想深入学习 matplotlib,可以参考官方文档

基础知识

绘图逻辑依照四个容器:图figure、坐标系axis、坐标轴、刻度ticks。接下来我们一一讲解。

导入库

没有下载过matplotlib的童鞋先下载一下

pip install matplotlib
import matplotlib.pyplot as plt  #导入库

图figure

可以使用plt.figure()创建图层,参数包括图的名称、尺寸、颜色等。

plt.figure()   #创建图层
plt.xticks([]) #设置或获取当前图形的 x 轴刻度标签
plt.yticks([]) #设置或获取当前图形的 y 轴刻度标签
plt.show() #显示当前所有已经创建的图形窗口

运行上述代码后,会弹出一个空白的绘图窗口,该窗口的 x 轴和 y 轴上都没有刻度标签
在这里插入图片描述

坐标系axes

若要创建多个坐标系或者子图,有多种方法,下面介绍两种。

  • 下面是使用plt.subplot()创建两个个子图,呈现两个坐标系。
#方法一:使用subplot创建多图
plt.figure()

plt.subplot(2,1,1)  #绘制两行一列的子图1
plt.xticks([]) 
plt.yticks([])
plt.text(0.5,0.5,'subplot1',ha='center',va='center',size=20)

plt.subplot(2,1,2)  #绘制两行一列的子图2
plt.xticks([]) 
plt.yticks([])
plt.text(0.5,0.5,'subplot2',ha='center',va='center',size=20)

在这里插入图片描述

  • 使用plt.axes([])创建多个坐标系
# 方法二:使用plt.axes(left、bottom、width、height)创建多个坐标系
plt.figure()

plt.axes([0.1,0.1,0.5,0.5])
plt.xticks([]),plt.yticks([])
plt.text(0.1,0.1,'axes1',size=15)

plt.axes([0.3,0.5,0.5,0.5])
plt.xticks([]),plt.yticks([])
plt.text(0.1,0.1,'axes2',size=15)

在这里插入图片描述

坐标轴axis

使用plt.xlabel()设置x坐标轴标签,使用plt.xlim()设置x坐标轴范围

plt.figure()

plt.xlabel(('this is x axis'),size=15) #plt.xlabel()设置x坐标轴标签
plt.xlim(0,20) #plt.xlim()设置x坐标轴范围

plt.ylabel(('this is y axis'),size=15)
plt.ylim(0,1)

plt.show()

在这里插入图片描述

其它元素

  • 线:plt.plot(x,y)
  • 点:plt.scatter(x,y)
  • 添加文字:plt.text(x,y,s)
  • 添加图例:plt.legend()
  • 添加图片:plt.imshow()

运行配置

#全局运行配置plt.rcParams(),一般只在开头全局配置一次,如字体设置
plt.figure()
plt.rcParams['font.sans-serif'] = ['SIMHEI']
plt.rcParams['font.size'] = 20
plt.rcParams['font.weight']  = 'bold'
plt.rcParams['axes.edgecolor'] = 'green'

plt.xlabel('这是x轴')
plt.xticks([])

plt.show()

在这里插入图片描述

#修改全局配置后,若要恢复,可使用plt.clf()清空画布,
plt.clf()
plt.figure()

plt.style.use('default')  #恢复默认配置
#或plt.rodefaults()

plt.xlim(0,20)
plt.xticks([])

plt.show()

图形绘制

好了,完成了基础知识的学习,接下来我们就可以进行绘图了。

柱状图Bar

基础柱状图

绘制一个简单的多图柱状图

plt.figure()

plt.subplot(2,1,1)
plt.bar(s_count.index,s_count['2011年'],label='2011')

plt.subplot(2,1,2)
plt.bar(s_count.index,s_count['2012年'],label='2012')

在这里插入图片描述

分组柱状图

下面我们把这两张子图合并到一张图里

plt.figure(figsize=[10,6])
w = 0.35

plt.bar(s_count.index-w/2,s_count['2011年'],width=w,color='#70E0B2',label='2011')
plt.bar(s_count.index+w/2,s_count['2012年'],width=w,color='#FDDF5B',label='2012')

for x1,y1 in zip(s_count.index,s_count['2011年']): #添加绿bar上数字
    plt.text(x1-w/2,y1,y1,ha='center',va='bottom',fontsize=10)

for x2,y2 in zip(s_count.index,s_count['2012年']): #添加黄bar上数字
    plt.text(x2+w/2,y2,y2,ha='center',va='bottom',fontsize=10)

plt.xticks(ticks=s_count.index,labels=['spring','summer','fall','winter'],fontsize=12)
plt.legend()


plt.title('季度用户量柱状图')

plt.tight_layout()

plt.show()

在这里插入图片描述

堆叠柱状图

我们还可以使用另一种作图方式,堆叠柱状图

plt.bar(s_count.index,s_count['2011年'],label='2011')
plt.bar(s_count.index,s_count['2012年'],bottom=s_count['2011年'],label='2012')  #设置bottom参数,表示哪类数据在下面
plt.legend()
plt.tight_layout() #自动调整子图(subplots)、坐标轴标签、标题等元素的布局,以确保它们在图形中不会相互重叠,使图形的布局更加紧凑和美观。
plt.show()

在这里插入图片描述

折线图plot

下面我们学习折线图的绘制

plt.figure(figsize=[10,6])

plt.plot(m_count.index,m_count['2011年'],color='#70E0B2',label='2011',marker='o')
plt.plot(m_count.index,m_count['2012年'],color='#FDDF5B',label='2012',marker='s')

for x1,y1 in zip(m_count.index,m_count['2011年']):
    plt.text(x1,y1+1000,y1,ha='center',va='bottom',fontsize=12) #在 2011 年的折线上标注具体的用户量数值

for x2,y2 in zip(m_count.index,m_count['2012年']):
    plt.text(x2,y2+1000,y2,ha='center',va='bottom',fontsize=12) #在 2012 年的折线上标注具体的用户量数值

plt.legend()
plt.title('月度用户量折线图')
plt.tight_layout()

plt.show()

在这里插入图片描述

另一种绘图方式:面向对象API接口

在 matplotlib 中,除了使用 pyplot 这种命令式的接口绘图外,还可以使用面向对象(Object - Oriented)的 API 接口。面向对象的 API 更加灵活,适合创建复杂的图形,它允许你显式地创建 Figure 和 Axes 对象,然后对它们进行操作。

  • Figure:代表整个图形窗口,可以包含一个或多个 Axes 对象。
  • Axes:代表一个具体的绘图区域,每个 Axes 都有自己的坐标轴、刻度、标签等。

柱状图

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
categories = ['A', 'B', 'C', 'D']
values = [20, 35, 30, 25]

# 创建 Figure 和 Axes 对象
fig, ax = plt.subplots()

# 在 Axes 上绘制柱状图
ax.bar(categories, values)

# 设置标题和坐标轴标签
ax.set_title('Bar Chart')
ax.set_xlabel('Categories')
ax.set_ylabel('Values')

# 显示图形
plt.show()

在这里插入图片描述

折线图

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 创建包含 2 行 1 列子图的 Figure 和 Axes 对象数组
fig, axes = plt.subplots(2, 1)

# 在第一个子图上绘制正弦曲线
axes[0].plot(x, y1)
axes[0].set_title('Sine Curve')
axes[0].set_ylabel('Y')

# 在第二个子图上绘制余弦曲线
axes[1].plot(x, y2)
axes[1].set_title('Cosine Curve')
axes[1].set_xlabel('X')
axes[1].set_ylabel('Y')

# 调整子图布局
plt.tight_layout()

# 显示图形
plt.show()

在这里插入图片描述

主题风格

matplotlib提供了20+种主题风格,可以通过plt.style.use()切换。此为全局配置,使用plt.style.use(‘default’)恢复默认风格。

#colormap使用方法:
plt.figure(figsize=(4,15),dpi=150)

##ListedColormap(列表形式colormap)

#取多种颜色
plt.subplot(4,1,1)
plt.bar(range(5),range(1,6),color=plt.get_cmap('Accent')(range(5)))
#plt.bar(range(5),range(1,6),color=plt.cm.Accent(range(5)))
#plt.bar(range(5),range(1,6),color=plt.cm.get_cmap('Accent')(range(5)))

#取一种颜色
plt.subplot(4,1,2)
plt.bar(range(5),range(1,6),color=plt.cm.get_cmap('Accent')(5))

#取多种颜色
plt.subplot(4,1,3)
plt.bar(range(5),range(1,6),color=plt.get_cmap('Blues')(np.linspace(0,1,5)))

在这里插入图片描述
下面给出一些颜色编码,大家可以作为参考
在这里插入图片描述
创作不易,亲亲求点赞求收藏呀ヾ(=・ω・=)o

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值