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:图例字体大小
复制代码
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'
复制代码
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()
复制代码

结果为:

posted @   江畔何人初见月/  阅读(1014)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示