Python绘图库Matplotlib各种图的绘制(直⽅图,饼图,条形图,散点图...)
介绍
Matplotlib是⼀个Python 2D绘图库,它可以在各种平台上运⾏。 Matplotlib可⽤于Python脚本,Python和IPython shell,Jupyter笔记本,Web应⽤程序服务器和四个图形⽤户界⾯⼯具包。Matplotlib可以⽤于绘制直⽅图,饼图,条形图,散点图等。
安装
⾸先要安装python以及pip⼯具
win10管理员⽅式打开cmd
pip install matplotlib
Linux
sudo pip install matplotlib
本次实验环境
python==3.6.4
matplotlib==2.2.2
numpy==1.14.3
多个subplot
主要是⽤于放置多个同级的绘画窗⼝
⽅法⼀
import matplotlib.pyplot as plt
import numpy as np
# 构造两组数据
data = np.arange(100, 201)
data2 = np.arange(200, 301)
plt.subplot(1, 2, 1) # 选中1⾏2列中的第1个绘图区matplotlib中subplot
plt.plot(data)
plt.subplot(1, 2, 2)
plt.plot(data2)
plt.show() # 开始绘制窗⼝,可以理解为渲染
⽅法⼆
import matplotlib.pyplot as plt
import numpy as np
# 构造两组数据
data = np.arange(100, 201)
data2 = np.arange(200, 301)
fig = plt.figure() # 创建图形窗⼝的意思
# 设置布局
ax = fig.add_subplot(121) # ⽤⼀个变量接收1⾏2列中的第1个绘图区
# ax = fig.add_subplot(1,2,1) # 这个可以和上⾯的替换
ax.plot(data) # 在这个绘图区上作画
ax = fig.add_subplot(122)
ax.plot(data2)
plt.show()
竖着放更改subplot的前两个参数位置即可如plt.subplot(1, 2, 1)->plt.subplot(2, 1, 1)
线性图线性图plot 简单粗暴,任意两个相邻点之间的连线都是直线段
plot
第⼀个参数是横轴,第⼆个参数是纵轴,第三个是图形样式。
散点图散点图scatter 指⼀些离散的点,可以理解为⼀盘沙⼦
import matplotlib.pyplot as plt
# 绘制出来两点之间相连都是直线
plt.plot([1, 2, 3,4], [3, 6, 9,12], '-r') # -是实线,r 是红⾊
plt.plot([1, 2, 3,4], [1, 5, 3,12], ':g') # :是虚线,g 是绿⾊
plt.show()
scatter
参数1是横坐标,2是纵坐标,可以是列表,但列表的长度要能对应。
也可以更改形状,核⼼绘图部分稍微改下
import matplotlib .pyplot as plt
import numpy as np
N = 15
# 新建3组点(x,y),每组15个,x,y ⼤⼩在区间[0,100]之间
X1 = np .random.rand (N) * 100
Y1 = np .random.rand (N) * 100
X2 = np .random.rand (N) * 100
Y2 = np .random.rand (N) * 100
X3 = np .random.rand (N) * 100
Y3 = np .random.rand (N) * 100
plt .scatter (X1, Y1, c='r', s=100, alpha=0.5) # c 颜⾊,s ⼤⼩,alpha 透明度
plt .scatter (X2, Y2, c='g', s=200, alpha=0.5)
plt .scatter (X3, Y3, c='b', s=300, alpha=0.5)
plt .show ()
plt .scatter (X1, Y1, c='r', s=100, alpha=0.5,marker='*') # c 颜⾊,s ⼤⼩,alpha 透明度,marker 形状
plt .scatter (X2, Y2, c='g', s=200, alpha=0.5,marker='x')
plt .scatter (X3, Y3, c='b', s=300, alpha=0.5,marker='o')
饼状图
饼状图pie通常⽤来描绘百分⽐,更为直观
import matplotlib.pyplot as plt
import numpy as np
labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
# data = np.random.rand(7) * 100
data = [1, 2, 3, 4, 5, 6, 7] # data和labels的索引会对应,占⽐是data[i]/sum(data)
# 1.2f指的⼩数保留两位
plt.pie(data, labels=labels, autopct='%1.2f%%') # 第⼀个参数是占⽐,第⼆个各⾃的标签,第三个是显⽰精度
plt.axis('equal') # 让图看起来是圆的,不然就扁了
plt.legend() # 左上⾓的那个图例,随机的,可以⾃⼰换位置
plt.show()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论