基础操作

基本绘图流程

python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_显示中文

  1. 创建画布与创建子图:
    第一部分主要作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制。
  2. python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_显示中文_02

  3. 添加画布内容
    第二部分是绘图的主体部分。其中添加标题,坐标轴名称,绘制图形等步骤是并列的,没有先后顺序,可以先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。
  4. python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_数据_03

  5. 存与展示图形
    第三部分主要用于保存和显示图形。
  6. python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_ico_04

导包

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参数

  • pyplot 使用 rc 配置文件来自定义图形的各种默认属性,被称为 rc 配置或 rc 参数。
  • 在 pyplot 中几乎所有的默认属性都是可以控制的,例如视图窗口大小以及每英寸点数、线条宽度、颜色和样式、坐标轴、坐标和网格属性、文本、字体等。

线条的常用 rc 参数名称、解释与取值:

python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_显示中文_05


常用线条类型解释

python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_显示中文_06


线条标记解释

python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_数据_07


注意事项:

  • 由于默认的 pyplot 字体并不支持中文字符的显示,因此需要通过设置 font.sans-serif 参数改变绘图时的字体,使得图形可以正常显示中文。同时,由于更改字体后,会导致坐标轴中的部分字符无法显示,因此需要同时更改 axes.unicode_minus 参数。
  • 除了设置线条和字体的 rc 参数外,还有设置文本、箱线图、坐标轴、刻度、图例、标记、图片、图像保存等 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()

特征间的关系

1.散点图–plt.scatter(x,y)

  • 散点图(scatter diagram)又称为散点分布图,是以一个特征为横坐标,另一个特征为纵坐标,利用坐标点(散点)的分布形态反映特征间的统计关系的一种图形。
  • 值是由点在图表中的位置表示,类别是由图表中的不同标记表示,通常用于比较跨类别的数据。
    样式

格式

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):

python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_ico_08


实例

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()

2.折线图–plt.plot()

  • 折线图(line chart)是一种将数据点按照顺序连接起来的图形。可以看作是将散点图,按照 x 轴坐标顺序连接起来的图形。
  • 折线图的主要功能是查看因变量y随着自变量x改变的趋势,最适合用于显示随时间(根据常用比例设置)而变化的连续数据。同时还可以看出数量的差异,增长趋势的变化。
    样式

格式

matplotlib.pyplot.plot(*args, **kwargs)

plot 函数在官方文档的语法中只要求填入不定长参数,实际可以填入的主要参数主要如下:

python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_ico_09


color 参数的 8 种常用颜色的缩写

python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_数据_10


实例

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()

直方图–plt.hist()

  • 直方图(Histogram)又称质量分布图,是统计报告图的一种,由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据所属类别,纵轴表示数量或者占比。
  • 用直方图可以比较直观地看出产品质量特性的分布状态,便于判断其总体质量分布情况。直方图可以发现分布表无法发现的数据模式、样本的频率分布和总体的分布。

样式

python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_数据_11


格式

matplotlib.pyplot.hist(left,height,width = 0.8,bottom = None,hold = None,data = None,** kwargs )

常用参数及说明如下表所示:

python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_ico_12


实例

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()

饼状图–plt.pie()

  • 饼图(Pie Graph)是将各项的大小与各项总和的比例显示在一张“饼”中,以“饼”的大小来确定每一项的占比。
  • 饼图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小,而且显现方式直观。

样式

python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_数据_13


格式

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, … )

常用参数及说明如下表所示:

python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_显示中文_14


实例

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()

图片演示

python的matplotlib如何以画布中心为原点画坐标轴 matplotlib 画布_数据_15