声明:本文为借鉴其他帖子总结出来的学习笔记,不作它用。

Matplotlib

Python中类似Matlab的绘图工具

pyplot基础语法

Matplotlib中最基础的模块是pyplot。

创建画布

**plt.figure(figsize,facecolor)**

参数:
figsize:指定画布大小,像素,单位为英寸

figure是图片的载体,可以看做是画布,图片必须在画布的基础上进行创建在任何绘图之前,我们需要一个Figure对象,可以理解成我们需要一张画板才能开始绘图。

import matplotlib.pyplot as plt
fig = plt.figure(dpi=130)
plt.show

添加画布内容

plt.title(string)

在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等参数.

plt.xlabel(string)

在当前图形中添加x轴名称,可以指定标题的名称、位置、颜色、字体大小等参数.

plt.ylabel(string)

在当前图形中添加y轴名称,可以指定标题的名称、位置、颜色、字体大小等参数.

plt.xlim(xmin,xmax)

指定当前图形x轴的范围,只能确定一个数值区间,而无法使用字符串标识。

plt.ylim(ymin,ymax)

指定当前图形y轴的范围,只能确定一个数值区间,而无法使用字符串标识。

plt.xticks()

指定x轴刻度的数目与取值

plt.yticks()

指定y轴刻度的数目与取值

plt.legend()

指定当前图形的图例,可以指定图例的大小、位置、标签

保存与展示图形

plt.savafig()

保存绘制的图片,可以指定图片的分辨率、边缘的颜色等参数

plt.show()

显示图形

简单图表的绘制

plot()绘制直线图

plt.plot(x,y,ls,lw,lable,color)

参数:
x,y:绘制数据
ls:线形
lw:线宽
lable:标签文本内容
color:颜色

示例:

import matplotlib.pyplot as plt
x=[1, 2, 3, 4, 5]
y=[2, 4, 6, 8, 10]
plt.plot(x, y)
plt.show()

Python改变画布 python matplotlib 设置画布大小_Python改变画布

plot()绘制曲线图

import numpy as np
import matplotlib.pyplot as plt

plt.figure(dpi=130)  # 设置绘图窗口的大小

x = np.linspace(0, 2 * np.pi, 100)  # 产生100个0到2π之间的元素

plt.plot(x, np.sin(x), 'g')  # sin(x)的曲线绘制
plt.show()

Python改变画布 python matplotlib 设置画布大小_学习_02

bar()绘制柱状图

plt.bar(x,height,width,bottom)

参数:
x:横坐标
y:纵坐标
width:柱宽

示例:单列柱状图绘制

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5, 6]
y = [4, 5, 2, 3, 1, 5]
plt.bar(x,y, width = 0.8, align = 'center', color = 'blue')  
plt.show()

Python改变画布 python matplotlib 设置画布大小_子图_03


示例:双列柱状图绘制

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(3)
y = [5, 2, 3]
y1 = [1, 10, 7]

bar_width = 0.3
tick_label = ["A", "B", "C"]
plt.bar(x, y, align="center", color="c", width=bar_width, label="title_A", alpha=0.5)
plt.bar(x + bar_width, y1, align="center", color="b", width=bar_width, label="title_B", alpha=0.5)
plt.xticks(x + bar_width / 2, tick_label)
plt.show()

Python改变画布 python matplotlib 设置画布大小_Python改变画布_04


示例:数据对比柱状图绘制

import numpy as np
import matplotlib.pyplot as plt

plt.figure(figsize=(9, 5))  # 绘制绘图窗口的大小

# 中文显示
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False

# 设置图表数据
x = range(15)
np.random.seed(123)
y1 = np.random.random(15)
y2 = np.random.random(15)

# 绘制柱状图
plt.bar(x, y1, facecolor='#FFF68F')
plt.bar(x, -y2, facecolor='#9999FF')

# 柱状图注释设置
for i, j in zip(x, y1):
    plt.text(i, j, '%.2f' % j, ha='center', va='bottom')
for i, j in zip(x, y2):
    plt.text(i, -j, '%.2f' % j, ha='center', va='top')

plt.ylim(-1.2, 1.2)  # 设置Y轴的范围
plt.title('数据对比')
plt.show()

Python改变画布 python matplotlib 设置画布大小_学习_05

barh()绘制横向条形图

plt.barh()

示例:绘制单列条形图

import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [15, 62, 48, 83]
plt.barh(x, y, align = 'center', color = 'blue')  
plt.show()

Python改变画布 python matplotlib 设置画布大小_matplotlib_06


示例:绘制双列条形图

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(4)
y = [5, 1, 4, 9]
y1 = [1, 7, 3, 7]

bar_width = 0.4
tick_label = ["A", "B", "C", "D"]

plt.barh(x, y, bar_width, align="center", color="c", label="title_A", alpha=1)
plt.barh(x + bar_width, y1, bar_width, align="center", color="b", label="title_B", alpha=1)
plt.yticks(x + bar_width / 2, tick_label)
plt.legend()
plt.show()

Python改变画布 python matplotlib 设置画布大小_学习_07

pie()绘制饼图

Python改变画布 python matplotlib 设置画布大小_算法_08


示例:绘制十等分饼图

import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(5, 5))
 
z = np.ones(10)      # 设置一个十等份的数据
plt.pie(z, autopct='%.2f%%', explode=[0.1] + [0]*9, labels=list('ABCDEFGHIJ'), labeldistance=1.1)
plt.show()

Python改变画布 python matplotlib 设置画布大小_子图_09


示例:不同数据饼图的绘制

import matplotlib.pyplot as plt

plt.figure(figsize=(5, 5))
x = [21, 15, 9,69, 84, 17]

plt.pie(x, autopct='%.2f%%', labels=list('ABCDEF'))
plt.show()

Python改变画布 python matplotlib 设置画布大小_Python改变画布_10

scatter()绘制散点图

plt.scatter(x,y,c,marker,label,color)

参数:
x,y:相同长度的序列
c:单个颜色字符或颜色序列
marker:标记的样式,默认为‘o’
label:标签文本内容
color:颜色

示例:绘制sin散点图

import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(9, 5)) 
 
plt.rcParams['font.sans-serif'] = 'SimHei'  # 中文显示
plt.rcParams['axes.unicode_minus'] = False
 
x = np.linspace(0, 2*np.pi, 100)   # 产生100个0到2π之间的元素
y = np.sin(x) + np.random.rand(100)
 
plt.title('sin散点图')
plt.scatter(x, y)
plt.show()

Python改变画布 python matplotlib 设置画布大小_子图_11


示例:双数据散点图绘制

import numpy as np
import matplotlib.pyplot as plt
 
x1 = np.random.randn(30)
x2 = np.random.randn(30)
plt.figure(1)
plt.plot(x1, 'bo', markersize=15)
plt.plot(x2, 'ro', ms=8,)
plt.show()

Python改变画布 python matplotlib 设置画布大小_子图_12

subplot()绘制子图

示例:通过plt的subplot绘制子图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
 
plt.figure(figsize=(15, 15))

# 画第1个子图:折线图
x=np.arange(1,100)
plt.subplot(221)   # 第一行第一个子图(加不加逗号都可以)
plt.plot(x,x*x)
 
# 画第2个子图:散点图
plt.subplot(222)  # 第一行第二个子图(加不加逗号都可以)
plt.scatter(np.arange(0,10), np.random.rand(10))
 
# 画第3个子图:饼图
plt.subplot(223)   # 第二行第一个子图(加不加逗号都可以)
plt.pie(x=[15,30,45,10],labels=list('ABCD'),autopct='%.0f%%',explode=[0,0.05,0,0])
 
# 画第4个子图:条形图
plt.subplot(224)   # 第二行第二个子图(加不加逗号都可以)
plt.bar(['a','b','c','d','e'],[20,15,35,25,20],color='r')
plt.show()

Python改变画布 python matplotlib 设置画布大小_Python改变画布_13


示例:通过plt的add_subplot绘制子图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
 
fig=plt.figure(figsize=(15, 15))
 
# 画第1个图:折线图
x=np.arange(1,100)
ax1=fig.add_subplot(221)
ax1.plot(x,x*x)
 
# 画第2个图:散点图
ax2=fig.add_subplot(222)
ax2.scatter(np.arange(0,10), np.random.rand(10))
 
# 画第3个图:饼图
ax3=fig.add_subplot(223)
ax3.pie(x=[15,30,45,10],labels=list('ABCD'),autopct='%.0f%%',explode=[0,0.05,0,0])
 
# 画第4个图:条形图
ax4=fig.add_subplot(224)
ax4.bar(['a','b','c','d','e'],[20,15,35,25,20],color='r')
plt.show()

Python改变画布 python matplotlib 设置画布大小_matplotlib_14


示例:多个函数的子图绘制

import numpy as np
import matplotlib.pyplot as plt
 
# 创建一个两行两列的图表, ax表示每一个子图,是一个两行两列的矩阵
fig, ax = plt.subplots(2, 2, sharex=False, sharey=False)
 
# 在第1行第1列(ax[0][0])绘制正弦曲线
x = np.arange(-2 * np.pi, 2 * np.pi, 0.2)
sin_x = np.sin(x)
ax[0][0].plot(x, sin_x)
ax[0][0].set(title='y = sin(x)')
 
# 在第1行第2列绘制正弦曲线
cos_x = np.cos(x)
ax[0][1].plot(x, cos_x, 'r')
ax[0][1].set(title='y = cos(x)')
 
# 在第2行第1列绘制对数曲线
x = np.arange(1, 100, 0.01)
log_x = np.log(x)
ax[1][0].plot(x, log_x, 'g')
ax[1][0].set(title='y = log(x)')
 
# 在第2行第2列绘制指数曲线
x = np.arange(-1, 1, 0.01)
exp_x = np.exp(x)
ax[1][1].plot(x, exp_x, 'y')
ax[1][1].set(title='y = exp(x)')
 
# 调整子图之间的距离,wspace:为水平间隔百分比,hspace为垂直间隔百分比
plt.subplots_adjust(wspace=0.4, hspace=0.6)  # 调整子图间距
plt.savefig('subplot.png')   # 保存图表
plt.show()    # 显示图表

Python改变画布 python matplotlib 设置画布大小_算法_15

其他相关内容

线条颜色的设置

‘b’蓝色 ‘r’红色 ’c‘青色 ’m‘品红 ’y‘黄色 ’k‘黑色
‘g’绿色 ’w‘白色

本文主要引用了一下帖子的内容:

Matplotlib库介绍

1 使用matplotlib的python数据可视化——简单图表的绘制(线形图、柱形图、饼图、条形图、散点图和子图)