3. Matplotlib(一) - 画二维图

参数配置

​ 为了让图片可以显示中文,需要有必要的参数配置

plt.rcParams['font.sans-serif'] = 'SimHei' # 可以显示中文
plt.rcParams['axes.unicode_minus'] = False # 可以显示负号
1. 二维坐标画折线图
  • plt.plot(x, y) 绘制二维折线图

    x = np.linspace(0, 50, 500)
    y = np.sin(x)
    plt.plot(x, y) # 绘制y = sin(x)图
    plt.show() # 画图展示
    
    • plt.plot(x ,y) : 在坐标中表现为x与y的映射,所以x和y要采用相同的数据类型、相同的数据规模
    • plt.show() : 将绘制的图进行具体展示,如果在show方法之前使用了多个plt.plot()则会在同一个坐标中显示多个图像
    y = pd.DataFrame({'x0':[1,2,3], 'x1':[4,5,6]})
    x = pd.DataFrame({'y0':[1,2,3], 'y1':[4,5,6]})
    plt.plot(y,x) # 在同一张图中绘制了x0与y0 x1与y1两个函数
    			 # 等价于同时使用多个plt.plot绘制多个函数
    plt.show()
    

plt.plot(x, y)绘制折线图就是将(x, y)的坐标用光滑线进行连接

  • plt.plot(x, y) 的参数设置

    x = np.arange(0, 10)
    y = x**2
    plt.plot(x,y,  					# 传入x , y 作为绘图数据
             color = "red", 		# 设置线为红色
             linestyle = "--",   	# 设置绘图的线为虚线
             marker = "o",			# 设置数据点为实心圆 (默认不显示数据点)
             markersize = 5, 		# 设置实心圆的大小
             markerfacecolor = 'blue', # 设置实心圆的内部为蓝色
             markeredgecolor = "grey",  # 设置实心圆的边缘为灰色
            )
    plt.show()
    
    • linestyle 用于设置线段的样式

      参数类型实线虚线线点
      英文参数linestyle = ‘solid’linestyle = ‘dotted’linestyle = ‘dashed’linestyle = ‘dashdot’
      符号参数linestyle = ‘-’linestyle = ‘:’linestyle = ‘–’linestyle = ‘-.’
    • marker用于设置数据点的样式

      参数类型数据点实心圆五角星x形上下左右三角形
      符号参数marker =‘.’marker =‘o’marker =‘*’marker =‘x’marker =‘^v<>’ (取其一)
    • color 用于设置颜色 markerfacecolormarkeredgecolor相同

      参数类型红色蓝色绿色黄色
      英文color = ‘red’color = ‘blue’color = ‘green’color = ‘yellow’
      十六进制color = ‘#FF0000’color = ‘#0000FF’color = ‘#008000’color = ‘#FFFF00’

      颜色参数较多,不一一列举

2. 二维坐标画散点图
  • plt.scatter(x, y) 画二维散点图

    x = np.random.normal(0,1,1024)
    y = np.random.normal(0,1,1024)
    plt.scatter(x,y,  # 传入数据
                s = 5, # 设置散点的尺寸
                c = 'r', # 设置散点的颜色
                marker='*',  # 设置散点的形状
                alpha = 0.5 # 设置可见度
               )
    plt.show()
    

    在散点图plt.scatter(X, y)中,使用 s c设置散点的大小和颜色,区别在plt.plot()中的点的设置

  • 给具体的点添加注释

    plt.annotate(text="annotation",  # 设置注释的文字
                 xy=(2, 1),  # 需要注释的点的坐标
                 xytext=(+30, -10),  # 对注释文字的位置调整
                 textcoords='offset points', # 配合xytext使用,加上就行
                 fontsize=10,   # 设置注释的字体
                 arrowprops=dict(arrowstyle='->') # 设置注释文字的指向具体点的样式
                 )
    
    • plt.annotate()添加注释,由于这个功能本身就不常用,掌握上述即可。
    • xytext(a, b) 一般配合 textcoords='offset points' 一起使用,a和b的值需要慢慢调试
    • arrowprops=dict(arrowstyle='->') 设置指向方式,直接使用即可
    • plt.text() 也可以添加文字,见柱状图部分
3. 二维坐标画柱状图
  • plt.bar(x, y)绘制柱状图

    n = 12
    x = np.arange(n)
    Y1 = (1 - x / n) * np.random.uniform(0.5, 1.0, n)
    Y2 = (1 - x / n) * np.random.uniform(0.5, 1.0, n)
    
    plt.bar(x, Y1,    # 设置数据
            facecolor='r',  # 柱子的内部颜色
            edgecolor='b',  # 设置柱子的边缘颜色
           width=[i/10 for i in range(1, 13)] # 设置柱子的宽度
           )  
    	
    for a, b in zip(x, Y1):
        plt.text(a, b,   # 选定要添加文字的点
                 s='%.2f' % b) # 输入要添加的文字
    plt.show()
    
    • plt.bar()的参数
      • x ,y : 传入了柱状图的数据,绘制的柱状图以x为中点,width为宽度,y为高度
      • width :设置了柱状图的宽度,使用列表可以设置每个柱子的宽度,使用单一数据可以统一设定所有柱子的宽度。
    • plt.text(x, y, s) : (x, y)是要添加文字的坐标, s是要给该坐标添加的文字,配合plt.bar()可以实现给柱子顶端添加具体的数据。
  • plt.bar(x-width/2, y1, width=width), plt(x+width/2, y2 ,width = width)实现分组柱状图

    labels = ['G1', 'G2', 'G3', 'G4', 'G5']
    men_means = [20, 34, 30, 35, 27]
    women_means = [25, 32, 34, 20, 25]
    x = np.arange(5)
    width = 0.4
    
    plt.bar(x-width/2 ,men_means,  # 设置数据,
            width=width,           # 柱子宽度
            label = 'men_means')   # 设置标签
    
    plt.bar(x+width/2, women_means, 
            width=width, 
            label = 'women_means')
    
    plt.xticks(x, labels=labels)  # 横坐标替换
    plt.legend()  # 显示图例
    plt.show()
    
    • 当需要画分组柱状图时,通过调节柱子的中点位置(x-width/2)(x+width/2) 实现在同一个坐标系中画出两组柱状图
4. 坐标轴的相关设置
  • 折线图的属性设置

    plt.title('title')  # 设置图像标题
    plt.xlim((-1, 4)) # 设置x轴的取值范围
    plt.ylim((-2, 2)) # 设置y轴的取值范围
    plt.xlabel("x_axes") # 设置x轴的标签
    plt.ylabel("y_axes") # 设置y轴的标签
    plt.xticks(np.arange(-1, 3),['a', 'b', 'c', 'd'])
    				# 给x轴的刻度取别名
    plt.yticks(np.arange(-1, 1), ['good', 'well'])
    				# 给y轴的刻度取别名
    
    • plt.xlim((a, b)) plt.ylim((c, d)) 设定了x轴和y轴的取值范围
    • plt.xticks(<刻度>, <别名>) 使用这个方法时,x轴和y轴只会显示刻度对应的别名,但是本身的范围仍然是xlim()所定义的范围
  • 坐标轴的位置设置

    plt.plot(x, y)
    ax = plt.gca() # 获取图的坐标轴对象
    ax.spines['bottom'].set_position(('data', 0)) 
    				# 设置底部的坐标轴的位置为y轴为0的位置
    ax.spines['bottom'].set_color('red') # 设置底部坐标轴的颜色
    
    • plt.gca():返回了plt图的坐标轴对象
    • ax.spines['bottom'] :选中了底部轴
    • set_position(('data', 0)) : 设置坐标轴的位置
    • set_color('red') : 设置选中的坐标轴的颜色
  • 设置图例

    x = np.arange(4)
    y = x*2+5
    plt.figure()
    plt.plot(y,x, label = 'y = f(x)')  # 用 label给图像设置标签 
    plt.plot(x,y, label = 'x = f(y)')  # 用 label给图像设置标签 
    plt.legend(loc = 'upper right')   # 将图例显示在右上角
    plt.show()
    
    • plt.legend(loc = 'upper right') loc设置了图例的位置,位置参数如下

      位置字符表示数字表示
      右上loc = ‘upper right’loc = 1
      左上loc = ‘upper left’loc = 2
      左下loc = ‘lower left’loc = 3
      右下loc = ‘upper right’loc = 4
  • 打开网格线, plt.grid()

    plt.grid() # 显示网格线 
    plt.grid(b=True, axis='x') #只显示x轴网格线
    plt.grid(b=True, axis='y') #只显示y轴网格线
    

如有错误,还请指正,持续更新ing

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啥都想学的大学生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值