python数据可视化之matplotlib(上)
-
matplotlib
import matplotlib as mpl import matplotlib.pyplot as plt import pandas as pd import numpy as np # 解决坐标轴刻度负号乱码 plt.rcParams['axes.unicode_minus'] = False # 解决中文乱码问题 plt.rcParams['font.sans-serif'] = ['Simhei'] # 设置绘图风格 plt.style.use('seaborn')
在Jupyter Notebook中,有两种图形展现形式:
%matplotlib notebook :运行这句命令会在notebook中启动交互式图形
%matplotlib inline :运行这句命令会在notebook中启动静态图形
如果没有运行以上命令,默认是显示展现静态图形
%matplotlib notebook
%matplotlib inline
-
matplotlib图表组成元素
-
1、plot() 函数基本参数
- 函数功能:折线图,展现变量的趋势变化
- 调用方法:plt.plot(x, y, ls="-", lw=2, label="plot figure")
- 参数说明:
- x:x轴上的数值
- y:y轴上的数值
- ls:折线图的线条风格(linestyle)
- lw:折线图的线条宽度(lineweight)
- label:标记图形内容的标签文本
- color:图形颜色
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05,20,2000) y = np.sin(x) fig = plt.figure() # 创建一个图形(想象成画板) plt.plot(x, y, ls="-", lw=2, label="plot figure", color="c") # 调用画图函数画图(想象成在画板上贴纸画画) plt.legend(); #将图例显示出来
结果为:
-
2、图形的保存
# 保存画图 fig.savefig('figure_01.png') # 查看保存的画图 from IPython.display import Image Image('figure_01.png')
-
3、设置坐标轴上下限
- 3.1 xlim(),ylim()
- 函数功能:设置x、y轴的数值显示范围
- 调用方法:plt.xlim(xmin, xmax)
- 参数说明:
- xmin:x 轴上的最小值
- xmax:x 轴上的最大值(注意,xmin 和 xmax 的参数位置可以调换)
- 平移性:上面的函数功能,调用签名和参数说明同样可以平移到函数 ylim() 上
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05,10,200) y = np.random.rand(200) plt.scatter(x, y, label="scatter figure") plt.legend() plt.xlim(0.05, 20) #设置图形显示的x轴的范围 plt.ylim(0, 2) #设置图形显示的y轴的范围 plt.show()
结果为:
-
3.2 axis()
- 函数功能:plt.axis() 是获取或设置某些轴属性的便捷方法
- 第一种使用方法: plt.axis([xmin, xmax, ymin, ymax])
- xmin:x轴的最小范围值
- xmax:x轴的最大范围值
- ymin:y轴的最小范围值
- ymax:y轴的最大范围值
- 第二种使用方法: plt.axis(str)
- "on":打开轴线和标签
- "off":关闭轴线和标签
- "scaled":设置相等的缩放比例
- "tight":设置限制大小足以显示所有数据
- "auto":自动缩放(带数据的填充框)
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05, 20, 2000) y = np.sin(x) plt.plot(x, y, color="c") plt.axis(xmin=-10, xmax=25, ymin=-2, ymax=2) # 设置x,y轴最大小范围 plt.show()
结果为:
plt.plot(x ,y, color="c") plt.axis("off") # 不显示轴坐标 plt.show()
结果为:
-
4、设置图形标签
-
4.1 轴标签 xlabel(),ylabel()
- 函数功能:设置x轴、y轴的标签文本
- 调用方法:plt.xlabel(string, fontsize)
- 参数说明:
- string:标签文本内容
- fontsize:字体大小
- 平移性:上面的函数功能,调用签名和参数说明同样可以平移到函数 ylabel() 上
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05, 10, 100) y = np.cos(x) plt.plot(x, y, ls="-.", lw=2, c="c") plt.xlabel("x轴", fontsize=12) #设置x轴的文本标签 plt.ylabel("y轴") #设置y轴的文本标签 plt.show()
结果为:
-
4.2 文本标签图例 legend()
- 函数功能:标识不同图形的文本标签图例
- 调用方法:plt.legend(loc="lower left")
- 主要参数:
- loc:图例在图中的显示位置
- upper right
- upper left
- lower left
- lower right
- center left
- center right
- lower center
- upper center
- center
- title:图例标签内容标题
- shadow:线框阴影,True或者是False
- fancybox:线框圆角处理参数,True或者是False
- fontsize:图例字体大小
- loc:图例在图中的显示位置
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05, 10, 100) y_01 = np.cos(x) y_02 = np.sin(x) plt.plot(x, y_01, ls="-", lw=2, c="c", label="cos(x)") plt.plot(x, y_02, ls="-", lw=2, c="y", label="sin(x)") plt.legend(loc="lower left", title="函数", shadow=True, fancybox=True, fontsize=12) #或者写loc=3 plt.show()
结果为:
-
5、设置轴刻度与刻度标签 plt.xticks(),plt.yticks()
- 函数功能:给x轴、y轴设置刻度和标签
- 调用方法:plt.xticks(range, labels),plt.yticks(range, labels)
#导入包 import matplotlib.pyplot as plt import numpy as np #创建数据 x = np.linspace(-7, 5, 100) y1 = np.sin(x) y2 = np.cos(x) #画曲线1 plt.plot(x, y1) #画曲线2 plt.plot(x, y2, color='c',linestyle='--') # 准备坐标轴刻度所需要的数据 x_ticks = np.arange(-2*np.pi, 2*np.pi, np.pi/2) #这里生成x轴刻度所需的数 y_ticks = [-1,1] #这里生成y轴刻度所需的数 # 设置坐标轴刻度 plt.xticks(x_ticks, labels=["-2π", "-3π/2", "-π", "-π/2", "0", "π/2", "π", "3π/2"]) #这里给x轴的刻度贴上标签 plt.yticks(y_ticks) #显示出所有设置 plt.show()
结果为:
-
6、网格线 grid()
- 函数功能:绘制刻度线的网格线,只能根据刻度的位置自动生成
- 调用方法:plt.grid(linestyle="-.", color="r", axis="x")
- 参数说明
- linestyle:网格线的线条风格
- color:网格线的线条颜色
- axis:选择x、y轴上绘制网格线,默认是x轴和y轴都绘制
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05, 10, 100) y = np.cos(x) plt.plot(x, y, ls="-.", lw=2, c="c") #plt.grid() plt.grid(linestyle="-.", color="g", axis="x") #设置绿色的、虚线的网格线,如果只想画垂直于y轴的网格线,只需加上axis="y" plt.show()
结果为:
-
7、参考线 axhline(),axvline()
- 函数功能:绘制平行于x轴、y轴的水平参考线,自己指定位置
- 调用方法:plt.axhline(y=0, c="r", ls="--", lw=2),plt.axvline(x=0.5, c='r', ls='--', lw=2)
- 参数说明:
- y:水平参考线的出发点
- c:参考线的现调颜色
- ls:参考线的线条风格
- lw:参考线的线条宽度
- 平移性:上面的函数功能,调用签名和参数说明同样可以平移到函数axvline()上
注:一般函数名和方法名中,与轴相关的,带字母“h”的一般意味着是“horizontal”,带“v”一般意味着是vertical
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05, 10, 100) y = np.cos(x) plt.plot(x, y, ls="-.", lw=2, c="c") # plt.axhline(y=0) plt.axhline(y=0.3, c="r", ls="-.", lw=2) #画一条平行于x轴的红色虚线 plt.axvline(x=4, c="y", ls="-.", lw=2) #画一条平行于y轴的黄色虚线 plt.show()
结果为:
-
8、参考区域 axhspan(),axvspan()
- 函数功能:绘制垂直与y轴、垂直于x轴的参考区域
- 调用方法:plt.axhspan(ymin=1.1, ymax=2.2, facecolor='r', alpha=0.1),plt.axvspan(xmin=1.0, xmax=2.0, facecolor="y", alpha=0.3)
- 参数说明
- xmin,ymin:参考区域的起始位置
- xmax,ymax:参考区域的终止位置
- facecolor:参考区域的填充颜色
- alpha:参考区域的填充颜色的透明度
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05, 10, 100) y = np.cos(x) plt.plot(x, y, ls="-.", lw=2, c="c", label="plot figure") #plt.axvspan(xmin=3.0,xmax=9.0) plt.axvspan(xmin=2.0, xmax=8.0, facecolor="g", alpha=0.1) plt.axhspan(ymin=0.0, ymax=0.5, facecolor="r", alpha=0.1) plt.show()
结果为:
-
9、指向型注释 annotate()
- 函数功能:添加图形内容细节的指向型注释文本
- 调用方法:
plt.annotate(string, xy=(0.5,0.8), xytext=(1.5,0.8), color="b" arrowprops=dict(arrowstyle="->",color="b"))
- 参数说明:
- string:图形内容的注释文本
- xy:被注释图形内容的位置坐标
- xytext:注释文本的位置坐标
- weight:注释文本的字体粗细风格
- color:注释文本的字体颜色
- arrowprops:指示被注释内容的箭头的属性字典
- arrowstyle:
'-'
'->'
'-['
'|-|'
'-|>'
'<-'
'<->'
'<|-'
'<|-|>'
'fancy'
'simple'
'wedge'
- arrowstyle:
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05, 10, 100) y = np.cos(x) plt.plot(x, y, ls="-.", lw=2, c="c", label="$plot figure$") plt.legend() plt.annotate("看这里!", #图形内容的注释文本 xy=(0.5,0.8), #被注释图形内容的位置坐标 xytext=(1.5,0.8), #注释文本的位置坐标 weight="bold", #注释文本的字体粗细风格 color="r", #注释文本的字体颜色 arrowprops=dict(arrowstyle="->",color="purple")) plt.show()
结果为:
-
10、图形中的文本注释 text()
- 函数功能:添加图形内容细节的无指向型注释文本
- 调用方法:plt.text(x, y, string, weight="bold", color="b)
- 参数说明:
- x:注释文本内容所在位置的横坐标
- y:注释文本内容所在位置的纵坐标
- string:注释文本内容
- fontsize:字体大小
- color:注释文本内容的字体颜色
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05,10,100) y = np.cos(x) plt.plot(x, y, ls="-.", lw=2, c="c", label="$plot figure$") plt.legend() plt.text(3.1, 0.09, "cos(x)曲线", fontsize=15, color="r") plt.show()
结果为:
-
11、图形标题 title()
- 函数功能:添加图形内容的标题
- 调用方法:plt.title(string)
- 参数说明:
- string:图形内容的标题文本
- loc:center/left/right
- fontdict:可以用字典来存储,包含以下参数(下面的参数也可以单独在 plt.title() 中存在)
- family:字体类别
- size:字体大小
- color:字体颜色
- style:字体风格
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05, 10, 100) y = x**3 plt.plot(x, y, ls="-", lw=2, c="c", label="plot figure") plt.legend() font_dict = {"family":"Comic Sans MS","size":18,"style":"oblique"} plt.title("y=con(x)", loc="center", fontdict=font_dict) # plt.title("y=con(x)", loc="center", fontsize=20) plt.show()
结果为:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步