这是关于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的用法,在此做了一个总结,以方便日后查阅。
此上