Matplotlib基础

目录:

  • 一、绘制函数图像:
  • 二、创建画布对象:
  • 三、绘制多子图:
    • 1.自定义划分子图:
    • 2.subplot( )均分子图:
    • 3.subplot( )百分比划分子图:
    • 4.subplots( )均分子图:
  • 四、绘制柱状图:
    • 1.bar( )参数:
    • 2.简单柱状图:
    • 3.同坐标多柱状图:
    • 4.叠状图:
    • 5.水平柱状图:
  • 五、绘制直方图:
  • 六、绘制饼状图:
  • 七、绘制散点图:
  • 八、绘制箱线图:

一、绘制函数图像:

from matplotlib import pyplot as plt
import numpy as np
#生成(-50,50)的数组
x = np.arange(-50,50)
#计算因变量y的值
y = x ** 2
#根据x、y数组绘制图像y=x^2,其中属性设置图像显示参数,其中marker...设置标记点特性
plt.plot(x,y,linewidth=1,label="y=x^2的label参数",linestyle="-",color="r")

#修改字体配置,允许中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

#添加标题
plt.title("这是y=x^2的图像,范围[-50,50)",fontsize=16)

#图例,默认使用每个图像的label值作为图例说明
plt.legend(loc="upper right")

#显示网格,linestyle设置虚线实线,linewidth设置网格宽度,axis:x/y/both设置x/y/两者的网格
plt.grid(linestyle="--") 

#设置图像分辨率:72对应432*288、100对应600*400、300对应1800*1200,
plt.rcParams["figure.dpi"] = 100

#设置图像尺寸:
plt.rcParams["figure.figsize"] = (3,2)

#设置x、y轴名称
plt.xlabel("x轴")
plt.ylabel("y轴")

#设置x、y坐标区间
plt.xlim(x.min(),x.max())
plt.ylim(y.min(),y.max())

#设置x、y轴显示刻度,ticks设置刻度显示范围,rotation设置旋转角度,label覆盖原x刻度信息
x_titcks = range(-50,50,30)
plt.xticks(ticks=x_titcks,rotation=45,labels=["%i 刻"%i for i in x_titcks],color="red")

#修改坐标轴位置:1.获取当前坐标轴、2.spines确定top/bottom/left/right轴、set_color设置颜色、set_position设置移动百分比 
ax = plt.gca()
ax.spines["right"].set_color("none")
ax.spines["top"].set_color("none")
ax.spines["left"].set_position(("axes",0.5))

#向坐标区添加文本
for a in [-50,-25,0,25,50]:
	#(x,y,data)表示循环在图像(x,y)位置添加数据data
    plt.text(a,a**2,a**2)

#显示图形操作菜单
%matplotlib notebook
#显示构建的图像
plt.show()

Matplotlib基础_第1张图片

二、创建画布对象:

#创建图形对象
plt.figure(
    num="f1",#图像编号
    figsize=(4,2),#指定图像宽高,单位英寸
    dpi=100,#分辨率
    facecolor="gray",#背景颜色
    edgecolor=None,#边框颜色
    frameon=True#是否显示边框
    #颜色等其他图像设置
)

三、绘制多子图:

通过在figure对象上创建Axes子图在figure的选定区域上进行图像绘制。

1.自定义划分子图:

from matplotlib import pyplot as plt
import numpy as np
#创建图形对象
fig = plt.figure(num="f1",#图像编号)
#在fig对象上创建Axes子图:参数距离边界百分比[left,bottom,widith,height]
#1.ax1从距fig对象左边界0%距fig对象下边界50%开始,宽度高度50%
ax1 = fig.add_axes([0,0.5,0.5,0.5])
#2.ax2从距fig对象左边界50%距fig对象下边界0%开始,宽度高度50%
ax2 = fig.add_axes([0.5,0,0.5,0.5])

ax1.plot([1,2,3,4],[3,5,7,4],color="r")
ax2.plot([1,2,3,4],[4,8,2,8],color="b")

Matplotlib基础_第2张图片

2.subplot( )均分子图:

from matplotlib import pyplot as plt
import numpy as np
#subplot为均分画布的函数,参数:(rows,cols,index)表示划分rows行cols列,该子图占用ax为第index(0,rows*cols)个子画布
ax1 = plt.subplot(2,2,1)
ax2 = plt.subplot(2,2,2)
ax3 = plt.subplot(2,2,3)
ax4 = plt.subplot(2,2,4)

ax1.plot([1,2,3,4],[3,5,7,4])
ax2.plot([1,2,3,4],[1,2,3,4])
ax3.plot([1,2,3,4],[8,4,2,4])
ax4.plot([1,2,3,4],[3,1,6,5])

#画布中的子图采用紧凑型布局(解决图标重叠问题)
plt.tight_layout()

Matplotlib基础_第3张图片

3.subplot( )百分比划分子图:

from matplotlib import pyplot as plt
import numpy as np

ax1 = plt.subplot(1,2,1)
ax2 = plt.subplot(2,2,2)
ax3 = plt.subplot(2,2,4)

ax1.plot([1,2,3,4],[3,5,7,4])
ax2.plot([1,2,3,4],[1,2,3,4])
ax3.plot([1,2,3,4],[8,4,2,4])

#画布中的子图采用紧凑型布局(解决图标重叠问题)
plt.tight_layout()

Matplotlib基础_第4张图片

from matplotlib import pyplot as plt
import numpy as np

ax1 = plt.subplot(3,1,3)
ax2 = plt.subplot(3,2,1)
ax3 = plt.subplot(3,2,2)
ax4 = plt.subplot(3,2,3)
ax5 = plt.subplot(3,2,4)

ax1.plot([1,2],[3,5])
ax2.plot([1,2],[1,2])
ax3.plot([1,2],[8,4])
ax4.plot([1,2],[7,6])
ax5.plot([1,2],[6,7])

#画布中的子图采用紧凑型布局(解决图标重叠问题)
plt.tight_layout()

Matplotlib基础_第5张图片

4.subplots( )均分子图:

from matplotlib import pyplot as plt
import numpy as np
#subplots(rows,cols)函数返回值有两个:画布对象+子图数组
fig,axes = plt.subplots(2,2)

axes[0][0].plot([1,2,3,4],[3,5,7,4])
axes[0][1].plot([1,2,3,4],[1,2,3,4])
axes[1][0].plot([1,2,3,4],[8,4,2,4])
axes[1][1].plot([1,2,3,4],[3,1,6,5])

#画布中的子图采用紧凑型布局(解决图标重叠问题)
plt.tight_layout()

Matplotlib基础_第6张图片

四、绘制柱状图:

1.bar( )参数:

Matplotlib基础_第7张图片

2.简单柱状图:

from matplotlib import pyplot as plt
import numpy as np

#x轴坐标[1,2,3,4],高度[2,4,6,8]
plt.bar([1,2,3,4],[2,4,6,8],color=["r","g","b","y"])

Matplotlib基础_第8张图片

3.同坐标多柱状图:

from matplotlib import pyplot as plt
import numpy as np

#国家
countries = ["挪威","德国","中国","美国","瑞典"]
#金牌
gold = [16,12,9,8,8]
#银牌
silver = [8,10,4,10,5]
#铜牌
bronze = [13,5,2,7,5]

#1.确定不同国家金银铜牌柱状图起始位置数组
x = np.arange(len(countries))
width = 0.2
#金牌起始位置数组
gold_x = x
#银牌起始位置数组
silver_x = x + width
#铜牌起始位置数组
bronze_x = x + width * 2

#2.绘制金牌图形:gold_x[i]位置分别绘制高度为gold[i]宽度为width的柱状图
plt.bar(gold_x,gold,width=width,color="gold")
#3.绘制银牌图形
plt.bar(silver_x,silver,width=width,color="silver")
#4.绘制铜牌图形
plt.bar(bronze_x,bronze,width=width,color="saddlebrown")

#5.ticks设置刻度显示范围,label覆盖原x刻度信息
plt.xticks(ticks=x+width,labels=countries)

#6.向坐标区添加文本
for i in x:
    plt.text(gold_x[i],gold[i],gold[i],va="bottom",ha="center")
    plt.text(silver_x[i],silver[i],silver[i],va="bottom",ha="center")
    plt.text(bronze_x[i],bronze[i],bronze[i],va="bottom",ha="center")

Matplotlib基础_第9张图片

4.叠状图:

使用bottom属性

from matplotlib import pyplot as plt
import numpy as np

#国家
countries = ["挪威","德国","中国","美国","瑞典"]
#金牌
gold = [16,12,9,8,8]
#银牌
silver = [8,10,4,10,5]
#铜牌
bronze = [13,5,2,7,5]

#2.绘制金牌图形
plt.bar(countries,gold,bottom=np.array(silver)+np.array(bronze),color="gold")#注意列表相加要转为数组
#3.绘制银牌图形
plt.bar(countries,silver,bottom=bronze,color="silver")
#4.绘制铜牌图形
plt.bar(countries,bronze,bottom=0,color="saddlebrown")

Matplotlib基础_第10张图片

5.水平柱状图:

参数同bar( )

from matplotlib import pyplot as plt
import numpy as np

#y轴坐标[1,2,3,4],宽度[2,4,6,8]
plt.barh([1,2,3,4],[2,4,6,8],color=["r","g","b","y"])

Matplotlib基础_第11张图片

五、绘制直方图:

六、绘制饼状图:

七、绘制散点图:

八、绘制箱线图:

你可能感兴趣的:(机器学习,matplotlib)