数据分析—matplotlib

本文介绍了使用Matplotlib库进行常规绘图的方法,包括折线图、柱状图、直方图和散点图的绘制技巧,以及如何设置细节、创建子图和调整风格。通过实例演示了如何创建和定制各种图表,适合初学者和进阶者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、常规绘图方法

折线图

import matplotlib.pyplot as plt
# 画一个简单的折线图,只需要把二维数据点对应好即可
xplot=[1,2,3,4]
yplot=[1,4,9,16]
plt.plot(xplot,yplot)
# 指明x轴与y轴的名称分别为xlabel和ylabe
plt.xlabel('xlabel')
plt.ylabel('ylabel')
# 显示折线图
plt.show()

在这里插入图片描述

1. 细节设置

plot()函数中可以设置很多细节参数。可以选择不同的线条类型和颜色。

xplot=[1,2,3,4]
yplot=[1,4,9,16]
#设置线条的样式和颜色
plt.plot(xplot,yplot,'-.',color='b')
# 指明x轴与y轴的名称分别为xlabel和ylabe
plt.xlabel('xlabel')
plt.ylabel('ylabel')
# 显示折线图
plt.show()

在这里插入图片描述
可以多次调用plot()函数来加入多次绘图的结果。

xplot=[1,2,3,4]
yplot=[1,4,9,16]
#设置线条的样式和颜色
plt.plot(xplot,yplot,'-.',color='b')
# 可以多次调用plot()函数来加入多次绘图的结果
plt.plot([2,3,4,5,6],[2,3,4,5,6],'>',color='r')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
# 显示折线图
plt.show()

在这里插入图片描述

x=np.linspace(-10,10)
y=np.sin(x)
plt.xlabel('xlabel')
plt.ylabel('ylabel')
plt.plot(x,y*2,'-',color='g')
plt.show()

在这里插入图片描述

2.子图

子图就是指一整幅图形中包含几个单独的小图,这些子图可以按照行或者列的形式排列。

x=np.linspace(-10,10)
y=np.sin(x)
# 21表示整体要绘制的子图是两行一列
plt.subplot(211)# 最后的1表示整体的第一幅图
plt.plot(x,y)

x2=np.linspace(-10,10)
y2=np.sin(2*x)
plt.subplot(212)# 最后的2表示整体的第二幅图
plt.plot(x2,y2)

plt.xlabel('xlabel')
plt.ylabel('ylabel')

plt.show()

在这里插入图片描述

plt.grid(True)# 添加网格
plt.text(0,0,'test')# 在指定位置添加注释
# 添加箭头,需给定起始和终止位置以及箭头的各种属性
plt.annotate('arrow',xy=(-5,0),xytext=(-2,0.3),arrowprops=dict(facecolor='red',shrink=0.05,headlength=20,headwidth=15))

3.风格设置

通过plt.style.use()函数来改变当前风格。

xplot=[1,2,3,4]
yplot=[1,4,9,16]
plt.style.use('dark_background')#注意添加位置,是在plot之前
plt.plot(xplot,yplot)
# 指明x轴与y轴的名称分别为xlabel和ylabe
plt.xlabel('xlabel')
plt.ylabel('ylabel')
# 显示折线图
plt.show()

在这里插入图片描述

二、 常用图表的绘制

1. 柱状图

matplotlib.pyplot.bar(x, height, width, bottom = None, align: str = ‘center’, data = None, **kwargs)

  • x
    表示x坐标,数据类型为float类型,一般为np.arange()生成的固定步长列表
  • height
    表示柱状图的高度,也就是y坐标值,数据类型为float类型,一般为一个列表,包含生成柱状图的所有y值
  • width
    表示柱状图的宽度,取值在0~1之间,默认值为0.8
  • bottom 柱状图的起始位置,也就是y轴的起始坐标,默认值为None
  • align
    柱状图的中心位置,“center”,"lege"边缘,默认值为’center’ color 柱状图颜色,默认为蓝色
  • alpha
    透明度,取值在0~1之间,默认值为1 label 标签,设置后需要调用plt.legend()生成 edgecolor 边框颜色
    linewidth 边框宽度,浮点数或类数组,默认为None tick_label:柱子的刻度标签,字符串或字符串列表,默认值为None。
  • orientation
    柱状图是竖直还是水平,竖直:“vertical”,水平条:“horizontal”
import matplotlib.pyplot as plt

data = [5, 6, 7, 8]
labels = ["a", "b", "c", "d"]
colors = ["red","yellow",'blue','black']

plt.bar(range(len(data)), data,color=colors,width=0.5)
plt.xticks(range(len(data)),labels)#获取或设置x轴的当前刻度位置和标签
plt.xlabel("x")
plt.ylabel("y")
plt.show()

在这里插入图片描述

2.直方图

直方图与柱状图的区别:
柱状图:条形图用长条形表示每一个类别,长条形的长度表示类别的频数,宽度表示表示类别。
直方图:直方图形式上也是一个个的长条形,但是直方图用长条形的面积表示频数,所以长条形的高度表示频数除以组距宽度表示组距,其长度和宽度均有意义。当宽度相同时,一般就用长条形长度表示频数。

import matplotlib.pyplot as plt
import numpy as np
import matplotlib

# 设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus']=False     # 正常显示负号
# 随机生成(10000,)服从正态分布的数据
data = np.random.randn(10000)# randn产生正态分布的随机数
"""
绘制直方图
data:必选参数,绘图数据
bins:直方图的长条形数目,可选项,默认为10
facecolor:长条形的颜色
edgecolor:长条形边框的颜色
alpha:透明度
"""
plt.hist(data, bins=40, facecolor="blue", edgecolor="black", alpha=0.5)
# 显示横轴标签
plt.xlabel("区间")
# 显示纵轴标签
plt.ylabel("频数/频率")
# 显示图标题
plt.title("频数/频率分布直方图")
plt.show()

在这里插入图片描述

3.散点图

可以用散点图来表示特征之间的相关性,调用 scatter()函数即可。

import numpy as np
import matplotlib.pyplot as plt
N=100
x=np.random.randn(N)
y=np.random.randn(N)
plt.scatter(x,y,alpha=0.8)
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值