1.基础绘图

1)绘图核心API

案例: 绘制简单直线

import numpy as np
import matplotlib.pyplot as mp

# 绘制简单直线
x = np.array([1, 2, 3, 4, 5])
y = np.array([3, 6, 9, 12, 15])

mp.plot(x, y)
mp.show()            # 显示图片,阻塞方法

python matplotlib增加虚线 matplotlib画虚线_数据挖掘

2)设置线性、线宽

linestyle: 设置线型,常见取值有实线('-')、虚线('--')、点虚线('-.')、点线(':')

linewidth:线宽

color:颜色(red, blue, green)

alpha: 设置透明度(0~1之间)

label: 设置标签

案例:绘制正弦、余弦曲线,并设置线型、线宽、颜色、透明度

import numpy as np
import matplotlib.pyplot as mp

x = np.arange(0, 2 * np.pi, 0.1)    #  # 以0.1为单位,生成0~2pi的数据
y1 = np.sin(x)
y2 = np.cos(x)

# 绘制图形
mp.plot(x, y1, label='sin', linewidth='2')      # 实线,线宽2像素
mp.plot(x, y2, label='cos', linewidth='4', linestyle='--')  # 虚线,线宽4像素

# 设置x轴和y轴文字
mp.xlabel('x')
mp.ylabel('y')

# 设置坐标轴范围
mp.xlim(0, 4 * np.pi)
mp.ylim(-2, 2)

# 设置图标题
mp.title('sin & cos')

# 设置图例
mp.legend()

mp.show()

python matplotlib增加虚线 matplotlib画虚线_图例_02

3)设置坐标刻度

#x_val_list: 	x轴刻度值序列
#x_text_list:	x轴刻度标签文本序列 [可选]
mp.xticks(x_val_list , x_text_list )
#y_val_list: 	y轴刻度值序列
#y_text_list:	y轴刻度标签文本序列 [可选]
mp.yticks(y_val_list , y_text_list )

案例:绘制二次函数曲线

import numpy as np
import matplotlib.pyplot as mp

x = np.arange(-5, 5, 0.1)       # 以0.1为单位,生成-5~5的数据
y = x ** 2

# 绘制图形
mp.plot(x, y, label=r'$y=x^2$',  # 线的标注
            linewidth=2,    # 线宽2像素
            color='red',    # 颜色
            alpha=0.5)      # 透明度

mp.xlabel('x')
mp.ylabel('y')

# 设置坐标范围
mp.xlim(-10, 10)
mp.ylim(-1, 30)

# 设置刻度
x_tck = np.arange(-10, 10, 2)
x_txt = x_tck.astype('U')
mp.xticks(x_tck)

y_tck = np.arange(-1, 30, 5)
y_txt = y_tck.astype('U')
mp.yticks(y_tck, y_txt)

mp.title('square')
mp.legend(loc='upper right')        # 图例

mp.show()

python matplotlib增加虚线 matplotlib画虚线_坐标轴_03

刻度文本的特殊语法 -- LaTex排版语法字符串

python matplotlib增加虚线 matplotlib画虚线_字符串_04

r'$x^n+y^n=z^n$',   r'$\int\frac{1}{x} dx = \ln |x| + C$',     r'$-\frac{\pi}{2}$'

4)设置坐标轴

坐标轴名:left / right / bottom / top

# 获取当前坐标轴字典,{'left':左轴,'right':右轴,'bottom':下轴,'top':上轴 }
ax = mp.gca()
# 获取其中某个坐标轴
axis = ax.spines['坐标轴名']
# 设置坐标轴的位置。 该方法需要传入2个元素的元组作为参数
# type: <str> 移动坐标轴的参照类型  一般为'data' (以数据的值作为移动参照值)
# val:  参照值
axis.set_position((type, val))
# 设置坐标轴的颜色
# color: <str> 颜色值字符串
axis.set_color(color)

案例:设置坐标轴格式

import numpy as np
import matplotlib.pyplot as mp

# 绘制简单直线
x = np.array([1, 2, 3, 4, 5])
y = np.array([3, 6, 9, 12, 15])

mp.plot(x, y)

# # 设置坐标轴
axis_b = mp.gca().spines['bottom']  # 获取下轴
axis_b.set_position(('data', 8))  # 设置下轴位置, 以数据作为参照值

axis_l = mp.gca().spines['left']  # 获取左轴
axis_l.set_position(('data', 0.5))  # 设置左轴位置, 以数据作为参照值

mp.gca().spines['top'].set_color('none')  # 设置顶部轴无色
mp.gca().spines['right'].set_color('none')  # 设置右部轴无色

mp.show() # 显示图片,阻塞方法

python matplotlib增加虚线 matplotlib画虚线_图例_05

 

5)图例

 测试loc属性,就是图例显示的位置

# 再绘制曲线时定义曲线的label
# label: <关键字参数 str> 支持LaTex排版语法字符串
mp.plot(xarray, yarray ... label='', ...)
# 设置图例的位置
# loc: <关键字参数> 制定图例的显示位置 (若不设置loc,则显示默认位置)
#	 ===============   =============
#    Location String   Location Code
#    ===============   =============
#    '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
#    ===============   =============
mp.legend(loc='')

6)特殊点

# xarray: <序列> 所有需要标注点的水平坐标组成的序列
# yarray: <序列> 所有需要标注点的垂直坐标组成的序列
mp.scatter(xarray, yarray, 
           marker='', 		#点型 ~ matplotlib.markers
           s='', 		#大小
           edgecolor='', 	#边缘色
           facecolor='',	#填充色
           zorder=3		#绘制图层编号 (编号越大,图层越靠上)
)

 

python matplotlib增加虚线 matplotlib画虚线_数据挖掘_06

import numpy as np
import matplotlib.pyplot as mp

# 绘制简单直线
x = np.array([1, 2, 3, 4, 5])
y = np.array([3, 6, 9, 12, 15])

mp.scatter(x, y,                # 特殊点的坐标
           marker='s',          # 点形状
           s=40,                # 大小
           facecolor='blue',    # 填充色
           zorder=3)            # 图层颜色

mp.plot(x, y)
mp.show()            # 显示图片,阻塞方法

python matplotlib增加虚线 matplotlib画虚线_图例_07

7)备注

# 在图表中为某个点添加备注。包含备注文本,备注箭头等图像的设置。
mp.annotate(
    r'$\frac{\pi}{2}$',			#备注中显示的文本内容
    xycoords='data',			#备注目标点所使用的坐标系(data表示数据坐标系)
    xy=(x, y),	 			#备注目标点的坐标
    textcoords='offset points',	        #备注文本所使用的坐标系(offset points表示参照点的偏移坐标系)
    xytext=(x, y),			#备注文本的坐标
    fontsize=14,			#备注文本的字体大小
    arrowprops=dict()			#使用字典定义文本指向目标点的箭头样式
)

arrowprops参数使用字典定义指向目标点的箭头样式

#arrowprops字典参数的常用key
arrowprops=dict(
	arrowstyle='',		# 定义箭头样式
    connectionstyle=''	        # 定义连接线的样式
)

箭头样式(arrowstyle)字符串如下

============   =============================================
Name           Attrs
============   =============================================
  '-'          None
  '->'         head_length=0.4,head_width=0.2
  '-['         widthB=1.0,lengthB=0.2,angleB=None
  '|-|'        widthA=1.0,widthB=1.0
  '-|>'        head_length=0.4,head_width=0.2
  '<-'         head_length=0.4,head_width=0.2
  '<->'        head_length=0.4,head_width=0.2
  '<|-'        head_length=0.4,head_width=0.2
  '<|-|>'      head_length=0.4,head_width=0.2
  'fancy'      head_length=0.4,head_width=0.4,tail_width=0.4
  'simple'     head_length=0.5,head_width=0.5,tail_width=0.2
  'wedge'      tail_width=0.3,shrink_factor=0.5
============   =============================================

连接线样式(connectionstyle)字符串如下

============   =============================================
Name           Attrs
============   =============================================
'angle'        angleA=90,angleB=0,rad=0.0
'angle3'       angleA=90,angleB=0`   
'arc'	       angleA=0,angleB=0,armA=None,armB=None,rad=0.0
'arc3'         rad=0.0
'bar'          armA=0.0,armB=0.0,fraction=0.3,angle=None
============   =============================================
import numpy as np
import matplotlib.pyplot as mp

# 绘制简单直线
x = np.array([1, 2, 3, 4, 5])
y = np.array([3, 6, 9, 12, 15])

mp.scatter(x, y,                # 特殊点的坐标
           marker='s',          # 点形状
           s=40,                # 大小
           facecolor='blue',    # 填充色
           zorder=3)            # 图层颜色

# 设置备注
mp.annotate(
    r'$y=kx+b$',			#备注中显示的文本内容
    xycoords='data',			#备注目标点所使用的坐标系(data表示数据坐标系)
    xy=(3, 9),	 		        #备注目标点的坐标 (4,16)
    textcoords='offset points',	        #备注文本所使用的坐标系(offset points表示参照点的偏移坐标系)
    xytext=(60, 30),			#备注文本的坐标
    fontsize=14,			#备注文本的字体大小
    arrowprops=dict(
        arrowstyle="->",
        connectionstyle="angle3"
    )			                #使用字典定义文本指向目标点的箭头样式
)

mp.plot(x, y)
mp.show()            # 显示图片,阻塞方法

python matplotlib增加虚线 matplotlib画虚线_图例_08