欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Matplotlib基础知识(一)

程序员文章站 2022-03-21 14:29:06
...

Matplotlib是一个Python语言的2D会图库,它支持各种平台,并且功能强大,能够轻易绘制出各种专业的图像。

介绍

Matplotlib适用于各种环境,包括:
-Python脚本
-IPython shell
-jupyter notebook
-Web应用服务器
-用户图形界面工具包
使用Matplotlib,能够轻易的生成各种类型的图像,例如:直方图,波谱图,条形图,散点图等,并且可以轻松的实现定制。

Matplotlib的基本元素

Matplotlib中的基本元素图表包括的元素:
—x轴和y轴:水平和垂直的轴线
—x轴和y轴刻度:刻度表示坐标轴均分隔,包括最小刻度和最大刻度
—x轴和y轴刻度标签:表示特定坐标轴的值
—绘图区域:实际绘图的区域。

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.font_manager import FontProperties #字体管理器

'''只含单一曲线的图'''
x = np.linspace(0, 10, 10)
# plot参数只有一个,x轴的坐标默认从0,1,2..开始
plt.plot(x)          # 这个参数绘制出来的是一条直线
plt.plot(x, x**2)    # 这两个参数绘制出来的是一个抛物线
plt.show()


'''包含多个曲线的图'''
# 1.可以使用多个plot函数(推荐),在一个图中绘制多个曲线
x = np.arange(0, 10, 1)  # arange函数用于创建等差数组,arange返回一个array对象,第三个数代表的是步长
plt.plot(x, 2*x)
plt.plot(x, x/2)
plt.plot(x, x**2)
plt.show()

# 2.也可以在一个plot函数中传入多对X,Y值,在一个图中绘制多个曲线
x = np.arange(0, 10, 1)
plt.plot(x, x**2, x, 5*x, x, x/3)
plt.show()


'''网格线'''
# 绘制正弦余弦  使用plt.grid(True)方法添加网格线
x = np.arange(-np.pi, np.pi, 0.01)
plt.plot(x, np.sin(x), x, np.cos(x))
plt.grid(True)
plt.show()

'''设置grid参数(参数与plot函数相同),使用plt面向对象的方法,创建多个子图显示不同网格线,lw代表linewidth,线的粗细,alpha表示线的明暗程度,color代表颜色'''
# 创建对象,图形就是所谓的对象 sub=子,在同一个窗口显示多个图形
plt.figure(figsize=(12, 9))    # 设置图标的大小

axes = plt.subplot(1, 3, 1)    # 创建1行3列第一个对象
x = np.arange(-20, 20, 0.1)
axes.grid(color="r", linestyle="--", linewidth=2)
axes.plot(x, np.sin(x))

axes1 = plt.subplot(1, 3, 2)   # 创建1行3列第二个对象
x1 = np.arange(-20, 20, 0.1)
axes1.grid(color="g", linestyle="-.", linewidth=2)
axes1.plot(x1, np.cos(x1))

axes2 = plt.subplot(1, 3, 3)  # 创建1行3列第三个对象=subplot(133)
axes2.grid(color="b", linestyle="--", linewidth=2)
axes2.plot(x, np.sin(x))
plt.show()


'''坐标轴界限'''
# axis方法:如果axis方法没有任何参数,则返回当前坐标轴的上下限axis(xmin=,ymin=)
x = np.random.randn(10)
plt.axis([-5, 15, -5, 10])     # 设置x轴从-5到15,y轴从-5到10
plt.plot(x)
plt.show()

# plt.axis("xxx")"tight"、"off"、"equal"... 设置坐标轴类型,关闭坐标轴
x = np.linspace(-5, 5, 100)
plt.plot(x, np.tan(x))
plt.axis("off")   # off关闭坐标轴,equal改变x轴和y轴的幅度
plt.show()

# 画圆
x = np.linspace(-5, 5, 100)
# plt.figure(figsize=(4, 4))  # 设置成圆与plt.axis("equal")效果一样
plt.plot(np.sin(x), np.cos(x))
plt.axis("equal")
plt.show()

# xlim方法和ylim方法  除了plt.axis方法,还可以通过xlim,ylim方法设置坐标轴范围
y = np.arange(0, 10, 1)
plt.plot(y)
plt.xlim(-2, 12)
plt.ylim(2, 10)
plt.show()


# 坐标轴标签  xlabel方法和ylabel方法,plt.ylabel("y=x^2+5",rotation=60)旋转
x = np.arange(0, 10, 2)
y = x**2 + 5
plt.plot(x, y)
plt.ylabel("f(x)=x**2+5", fontsize=12, rotation=0, horizontalalignment="right")  # rotation旋转
# plt.xlabel("x", fontsize=12)
# 设置图表中的汉字格式
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=15)
plt.xlabel('横坐标', fontproperties=font)
plt.show()

# 标题  title方法
x = np.linspace(-np.pi, np.pi, 100)
plt.plot(x, np.sin(x))
plt.title("f(x)=sin(x)", fontsize=12, loc="center")
plt.show()


'''图例 使用的是legend方法
两种传参方法:(1)【推荐使用】在plot函数中增加label参数;(2)在legend方法中传入字符串列表
'''
# 在plot函数中增加label参数
x = np.arange(0, 10, 1)
plt.plot(x, x, label="normal")
plt.plot(x, x**2, label="fast")
plt.plot(x, x/2, label="slow")
plt.legend()
plt.show()

# 在legend方法中传入字符串列表
x = np.arange(0, 10, 1)
plt.plot(x, x, x, 2*x, x, x/2)
plt.legend(["normal", "fast", "slow"])   # 添加图例  参数传递需要中括号
plt.show()

# label参数为"_xxx",则图例中不显示  plt.plot("x, x*1.5, label="_xxx")
x = np.arange(0, 10, 1)
plt.plot(x, x, label="normal")
plt.plot(x, x**2, label="_fast")
plt.plot(x, x/2, label="_slow")
plt.legend()
plt.show()


'''loc参数设置图例的显示位置
best=0, upper right=1, upper left=2, lower left=3, lower right=4, right=5, 
center left=6, center right=7, lower center=8, upper center=9, center=10'''
x = np.arange(0, 10, 1)
plt.plot(x, x, x, 2*x, x, x/2)
plt.legend(["normal", "fast", "slow"], loc="right")
plt.show()

# loc参数可以是2元素的元组,表示图例左下角的坐标  图例也可以超过图的界限loc=(-0.1,0.9)
x = np.arange(0, 10, 1)
plt.plot(x, x, x, 2*x, x, x/2)
plt.legend(["normal", "fast", "slow"], loc=(1, 1))  # loc=(0.5, 1)相对值,相对的图片宽高,1个图片的宽度单位
plt.show()


# ncol参数  col控制图例中有几列
x = np.arange(0, 10, 1)
plt.plot(x, x, x, 2*x, x, x/2)
plt.legend(["normal", "fast", "slow"], loc=0, ncol=1) 
plt.show()


# 修改线条样式 linestyle、color、marker
x1 = np.random.randn(100)
x2 = np.random.randn(100)
x3 = np.random.randn(100)
plt.plot(x1.cumsum(), c="b", linestyle="--", marker="o")       # cumsum求累加和
plt.plot(x2.cumsum(), c="y", linestyle="-.", marker=">")       # marker设置图例的形状
plt.plot(x3.cumsum(), c="r", linestyle=":", marker="*")
plt.legend(["x1", "x2", "x3"])
plt.savefig("pic.jpg", dpi=500, facecolor="green")
plt.show()


'''保存图片
figure.savefig的选项
---filename:“含有文件路径的字符串或Python的文件型对象。图像格式由文件扩展名推断得出,例如,.pdf推断出
PDF,.png推断出PNG("png","pdf","svg","ps","eps"....)
---dpi:图像分辨率(每英寸点数),默认为100
---facecolor:图像的背景色,默认为"W(白色)"'''

# plt.savefig("pic.jpg", dpi=500)    # 保存图片时出现空白后应该在 plt.show() 之前调用 plt.savefig()
相关标签: matplotlib基础知识