创建画布与创建子图:
第一部分主要作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制。
添加画布内容
第二部分是绘图的主体部分。其中添加标题,坐标轴名称,绘制图形等步骤是并列的,没有先后顺序,可以先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。
导包
import matplotlib.pyplot as plt
1.figure 创建画布
创建空白画布,可以指定画布的大小、像素
F = plt.figure()
2.title 标题
plt.title("line")
3.xlabel、ylabel,x、y轴名称
plt.xlabel("x")
plt.ylabel("y")
4.xlim、ylim,x、y轴刻度范围
plt.xlim((0,1))
plt.ylim((0,1))
5.xticks,yticks,x、y轴刻度间距
plt.xticks(np.arange(0,1,0.1))
plt.yticks([0,0.2,0.4,0.6,0.8,1])
6. flot 绘制曲线
plot(x,y)绘制曲线
#例:绘制y = 2*x+1
x = np.linspace(-1,1,50)
y = 2*x+1
plt.plot(x,y)
7.savefig 保存成图片
plt.savefig("img1.png")
8.图例
plt.legend(["y=x^2","y=x^4"])
9.show 显示画布
plt.show()
实例
import matplotlib.pyplot as plt
import numpy as np
# #案例一、绘制y = 2*x+1
# x = np.linspace(-1,1,50)
# y = 2*x+1
#
# #创建空白画布,可以指定画布的大小、像素
# F = plt.figure()
# #创建并选中子视图,可以指定子视图的行数、列数,和选中图片的编号
# # F.add_subplot()
#
# #plot(x,y)绘制曲线
# plt.plot(x,y)
#
# #保存成图片
# plt.savefig("img/img1.png")
# #显示画布
# plt.show()
# 案例二、在同一画布中显示两条曲线
#y1 = x^2
#y2 = x^4
x = np.arange(0.1,1,0.01)
y1 = x**2
y2 = x**4
plt.figure()
#常用设置
#标题
plt.title("line")
#x、y轴名称
plt.xlabel("x")
plt.ylabel("y")
#x、y轴刻度范围
plt.xlim((0,1))
plt.ylim((0,1))
#刻度间距,接受一个列表
plt.xticks(np.arange(0,1,0.1))
plt.yticks([0,0.2,0.4,0.6,0.8,1])
plt.plot(x,y1)
plt.plot(x,y2)
#图例
plt.legend(["y=x^2","y=x^4"])
plt.savefig("img/img2.png")
plt.show()
格式
F.add_subplot(m,n,index) # m行n列第index幅图
本质是多个基础图像绘制过程的叠加,即在同一画布上不同子图上的绘制
确定画布的大小800x600,并设置dpi=80
F= plt.figure(figsize=(8,6),dpi=80)
创建并指定子视图(m,n,index),m行n列第index幅图
F.add_subplot(2,1,1)
实例
import numpy as np
import matplotlib.pyplot as plt
#创建子视图
#本质是多个基础图像绘制过程的叠加,即在同一画布上不同子图上的绘制
rad = np.arange(0,np.pi*2,0.01)
#第一组数据
y1 = rad**2
y2 = rad**4
#确定画布的大小800x600,并设置dpi=80
F= plt.figure(figsize=(8,6),dpi=80)
#创建并指定子视图(m,n,index),m行n列第index幅图
F.add_subplot(2,1,1)
#确定刻度范围
plt.xlim(0,1)
plt.ylim(0,1)
plt.plot(rad,y1)
plt.plot(rad,y2)
plt.legend(["y = x^2","y = x^4"])
#第二幅图
s = np.sin(rad)
c = np.cos(rad)
F.add_subplot(2,1,2)
# 刻度
plt.xticks([])
plt.plot(rad,s)
plt.plot(rad,c)
plt.legend(["sin","cos"])
plt.show()
线条的常用 rc 参数名称、解释与取值:
常用线条类型解释
线条标记解释
注意事项:
显示中文
plt.rcParams["font.sans-serif"] = "SimHei"
设置正常显示符号,解决保存图像是"-"时显示方块
plt.rcParams["axes.unicode_minus"] = False
实例
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0.1,1,0.01)
y1 = x**2
y2 = x**4
#显示中文
plt.rcParams["font.sans-serif"] = "SimHei"
#设置正常显示符号,解决保存图像是"-"时显示方块
plt.rcParams["axes.unicode_minus"] = False
#创建画布
plt.figure()
#常用设置
#标题
plt.title("斗宗强者,恐怖如斯! ")
#x、y轴名称
plt.xlabel("x")
plt.ylabel("y")
#x、y轴刻度范围
plt.xlim((0,1))
plt.ylim((0,1))
#刻度间距,接受一个列表
plt.xticks(np.arange(0,1,0.1))
plt.yticks([0,0.2,0.4,0.6,0.8,1])
# rc参数
plt.plot(x,y1,color="blue",linewidth = 1.6,linestyle="-.")#"-","--","-.",":"
plt.plot(x,y2,color="red",linewidth = 1.6,linestyle="-.")
#图例
plt.legend(["y=x^2","y=x^4"])
#保存成图片
plt.savefig("img2.png")
#展示画布
plt.show()
格式
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, alpha=None, **kwargs)
def scatter(
x, y, s=None, c=None, marker=None, cmap=None, norm=None,
vmin=None, vmax=None, alpha=None, linewidths=None, verts=None,
edgecolors=None, *, data=None, **kwargs):
import numpy as np
import matplotlib.pyplot as plt
#散点图:主要用于分析特征间的相关关系
#折线图:主要用于分析自变量和因变量特征间的趋势关系
# 通用设置
#显示中文
plt.rcParams["font.sans-serif"] = "SimHei"
#设置正常显示符号,解决保存图像是"-"时显示方块
plt.rcParams["axes.unicode_minus"] = False
#输出设置
# 强制打印整个数组
np.set_printoptions(threshold=1000000)
#数据加载
data = np.load("国民经济核算季度数据.npz")
content = data["columns"]
values = data["values"]
print(content)
print(values)
# 可视化
plt.figure(figsize=(8,7))
plt.xlabel("年份")
plt.ylabel("生产总值(亿元)")
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation="30")
#散点图
plt.scatter(values[:,0],values[:,2],marker="p")
plt.show()
格式
matplotlib.pyplot.plot(*args, **kwargs)
plot 函数在官方文档的语法中只要求填入不定长参数,实际可以填入的主要参数主要如下:
color 参数的 8 种常用颜色的缩写
实例
import numpy as np
import matplotlib.pyplot as plt
#通用设置
#显示中文
plt.rcParams["font.sans-serif"] = "SimHei"
#设置正常显示符号,解决保存图像是"-"时显示方块
plt.rcParams["axes.unicode_minus"] = False
#输出设置
# 强制打印整个数组
np.set_printoptions(threshold=1000000)
#数据加载
data = np.load("国民经济核算季度数据.npz")
content = data["columns"]
values = data["values"]
print(content)
print(values)
# 可视化
plt.figure(figsize=(8,7))
#标题
plt.title("各产业各季度生产值")
#x、y轴名称
plt.xlabel("年份")
plt.ylabel("生产值")
#折线图
plt.plot(values[:,0],values[:,2],marker = "o",linestyle = "--")
#横轴刻度
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation="30")
#图例
plt.legend(["第一产业增加值_当季值(亿元)","第二产业增加值_当季值(亿元)","第三产业增加值_当季值(亿元)"])
#显示
plt.show()
matplotlib.pyplot.hist(left,height,width = 0.8,bottom = None,hold = None,data = None,** kwargs )
import numpy as np
import matplotlib.pyplot as plt
#通用设置
#显示中文
plt.rcParams["font.sans-serif"] = "SimHei"
#设置正常显示符号,解决保存图像是"-"时显示方块
plt.rcParams["axes.unicode_minus"] = False
#输出设置
# 强制打印整个数组
np.set_printoptions(threshold=1000000)
#数据加载
data = np.load("国民经济核算季度数据.npz")
content = data["columns"]
values = data["values"]
print(content)
print(values)
# 刻度标签
label=["第一产业","第二产业","第三产业"]
value = values[-1,3:6]
# 可视化
plt.figure(figsize=(8,7))
plt.xticks(range(3),label)
#标题
plt.title("2017年第一季度各产业生产值对比")
#x、y轴名称
plt.xlabel("产业")
plt.ylabel("生产总值(亿元)")
#直方图
plt.hist(range(3),value,width=0.5)
#显示
plt.show()
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, … )
import numpy as np
import matplotlib.pyplot as plt
#通用设置
#显示中文
plt.rcParams["font.sans-serif"] = "SimHei"
#设置正常显示符号,解决保存图像是"-"时显示方块
plt.rcParams["axes.unicode_minus"] = False
#输出设置
# 强制打印整个数组
np.set_printoptions(threshold=1000000)
#数据加载
data = np.load("国民经济核算季度数据.npz")
content = data["columns"]
values = data["values"]
print(content)
print(values)
#数据
value = values[-1,3:6]
labels=["第一产业","第二产业","第三产业"]
# 可视化
plt.figure(figsize=(8,7))
#标题
plt.title("2017年第一季度各产业生产值占比")
#饼状图
plt.pie(value,explode=[0.01,0.02,0.02],labels=labels,autopct="%.1f%%")
#显示
plt.show()
代码及具体内容
import matplotlib.pyplot as plt
import numpy as np
# 显示中文
# 注意必须在差UN关键画布之前声明
plt.rcParams['font.sans-serif'] = 'SimHei'
# 设置正常显示符号,解决保存图像是符号’-‘显示方块
plt.rcParams['axes.unicode_minus'] = False
#将一个圆分为5份
dataLength = 5
#文字标签
labels = ["生存","输出","带线","发育","KDA"]
#角度范围,
angles = np.linspace(0,2*np.pi,dataLength,endpoint=False)
#数值
data= [10,6,9,5,7]
#闭合
new_data = np.concatenate((data,[data[0]]))
new_angles = np.concatenate((angles,[angles[0]]))
F= plt.figure()
#雷达图
plt.polar(new_angles,new_data)
plt.title("战绩评定")
#刻度
plt.xticks(new_angles,labels)
plt.show()