关于Matplotlib的一些总结

这是关于Matplotlib的总结,包括初始的创建,x、y轴的修改,散点图,柱状图,注释与图例等。

一、初始的创建

在创建时,首先要进行导包操作,具体如下:

import matplotlib.pyplot as plt

pyplot 是 matplotlib 库的一个子模块,提供了类似于MATLAB的接口,使得绘图更加直观和简便。

pyplot 提供了许多函数,如 plot()scatter()hist()bar()xlabel()ylabel()title()show() 等,用于绘制各种类型的图表。

通常,我们在使用matplotlib时,不仅需要它本身,还需要numpy库:

import numpy as np

接下来,我们要写入一个函数,假如这个函数就是:

y = x+1

那么,在直接写入它前还需要对于x进行一个定义,如下:

x = np.linspace(-1,1,50)

在这行代码中,它是numpy库中linspace函数用来生成一个等差数列,-1与1是表示x的范围,50表示等差数列中的元素数量,如果第三个函数不定义则默认为50。

当然,关于这个x的定义不只有这个方法,还可以用np.arange来定义,它类似于range函数,但它可以处理浮点数,具体的定义方法同上,在此不展示了。(当然,生成随机数和创建列表和数组等方法同样可以用来处理x的定义)

定义完,就可以直接写入想要的函数。

写入完便是画图:

plt.plot(x,y)
plt.show()

第一行是画图的函数,默认情况下,它处理两个参数,即是x与y轴各自的数据点x与y。如果 x 没有提供,Matplotlib 会自动使用从 0 开始的索引作为 x 轴的值。

第二行的函数是用来展示最后绘成的图表,一般情况下它都会在所有代码的最后。

所有代码完整展示为:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1,1,50)
y = x+1
plt.plot(y)
plt.show()

显示的图表为:

二、x与y轴的修改

如果要修改x与y轴,那么可以用函数xlim()或ylim(),具体范围写入括号内即可。

然后若还要在x与y轴上写上表示之类的可以用xlabol()或ylabol()函数即可,当然要标注的内容同样写入括号中去。

当我们要在x或y轴的某一定刻度上标识时,那么需要函数xticks()与yticks(),首先我先展示一段代码:

new_ticks = np.linspace(-1,1,5)
plt.xticks(new_ticks)
plt.yticks([-2,-1,0,1,2],['really bad','$bad$','normal','good','really good'])

它产生的图表是:

其中,不难发现我们只要写入两个列表,第一个列表是具体数值,第二个则是对应的标识,然后就可产生这样的效果,此外,图中的bad的是斜体,而产生斜体效果就只需要在对应的表示前后加上$符号即可。

然后,当我们需要图中仅展示x与y轴,不需要上边框与右边框时,需要代码:

ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

当然,也可以是:

ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')

这个二者间,第一个表示是否可视,第二个则是选择颜色,所以当我么需要将坐标轴的颜色进行更改时时,也可以用第二个来更改。

如果我们想要让坐标轴展示在中间需要函数set_position()然后将位置改为zero。

将上述的部分内容整体展示下为:

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(-10, 10, 100)
y = np.sin(x)

# 创建图形
fig, ax = plt.subplots()

# 绘制图形
ax.plot(x, y)

# 隐藏顶部和右边的边框
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

# 将左边和底边的边框移动到坐标轴的中心
ax.spines['left'].set_position('zero')
ax.spines['bottom'].set_position('zero')

# 移动坐标轴标签
ax.xaxis.set_label_coords(0.5, -0.05)  # x 轴标签稍微向下移动
ax.yaxis.set_label_coords(-0.05, 0.5)  # y 轴标签稍微向左移动

# 显示图形
plt.show()

图像为:

三、散点图

如果我们要创建散点图,那么就需要函数scatter(),里面有四种参数,第一种是横纵坐标,第二种是散点的大小,第三种是点的颜色,最后一种是透明度。

那么这里给一个整体的代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成一些随机数据
np.random.seed(0)
x = np.random.rand(50) * 10
y = np.random.rand(50) * 10
sizes = np.random.rand(50) * 100  # 大小范围从 0 到 100
colors = np.random.rand(50)       # 颜色值范围从 0 到 1

# 创建一个散点图
plt.scatter(x, y, c=colors, s=sizes, alpha=0.6)

# 设置图表标题和坐标轴标签
plt.title('Advanced Scatter Plot Example')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

# 添加颜色条
plt.colorbar(label='Color Value')

# 显示图形
plt.show()

四、柱状图

如果我们要创建柱状图,那么我们就需要bar()函数。

关于创建柱状图的代码很简单,所以不需要再做解释了,整体的代码如下:

import matplotlib.pyplot as plt

# 数据准备
labels = ['A', 'B', 'C', 'D', 'E']
values = [20, 35, 25, 30, 40]

# 创建柱状图
plt.bar(labels, values)

# 添加标题和坐标轴标签
plt.title('Simple Bar Chart Example')
plt.xlabel('Categories')
plt.ylabel('Values')

# 显示图形
plt.show()

图标如下:

五、注释与图例

首先是最简单的图例,如果要显示图例需要函数legend(),它有三个参数,handles、labels和loc,它们三个分别是:第一个是一组 Line2D 对象,即你在plot方法中创建的对象;第二个是字符串列表对应名称,最后一个是图列出现的位置,一般可以选用'best',意思就是他会出现在整个图表的最空旷处,不过大多数时候,我们都可以直接什么都不写一切都用默认值。

然后是注解部分,如果要写注解可以用函数annotate(),我先给出一个例子,然后详细看下这个函数:

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 创建图表
plt.figure(figsize=(10, 5))

# 绘制曲线
plt.plot(x, y, label='sin(x)')

# 添加注解
xy = (np.pi, np.sin(np.pi))  # 注解的位置
xytext = (np.pi + 1, 0.5)    # 文本的位置
plt.annotate(
    'sin(π) = 0',
    xy=xy,
    xytext=xytext,
    arrowprops=dict(facecolor='black', shrink=0.05),
    fontsize=12,
    horizontalalignment='right',
    verticalalignment='top'
)

# 添加图例
plt.legend()

# 添加标题和轴标签
plt.title('Example Plot with Annotation')
plt.xlabel('X Axis Label')
plt.ylabel('Y Axis Label')

# 显示图形
plt.show()

图标如下:

函数中,一共有六个参数,第一个事注释的具体内容,第二个是注释点的位置,第三个是注释文本的位置,第四个是箭头的属性,包括箭头的颜色和缩放比例等,第四个是注释文本的大小,第五个和第六个是水平和竖直的对齐位置。

这些就是一些简单的我用到的matplotlib的用法,在此做了一个总结,以方便日后查阅。

此上

  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值