声明:本文为借鉴其他帖子总结出来的学习笔记,不作它用。
Python中类似Matlab的绘图工具
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()
显示图形
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
示例:通过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()
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()
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() # 显示图表
‘b’蓝色 ‘r’红色 ’c‘青色 ’m‘品红 ’y‘黄色 ’k‘黑色
‘g’绿色 ’w‘白色
Matplotlib库介绍
1 使用matplotlib的python数据可视化——简单图表的绘制(线形图、柱形图、饼图、条形图、散点图和子图)