pyplot设置坐标间距、图中每个点设置相应数值

一、画图常用的技巧

    本文主要对pyplot画图常用的技巧进行总结,主要包括设置横纵坐标范围设置横纵坐标间距,为图中点添加相应数值

  1.1 设置横纵坐标范围

    以2020年~2022年西华/西交/电科/川大复试线为例,

# 年份
YEARS = [2018, 2019, 2020, 2021, 2022]

# 西华复试线[2020-2022]
XiHua_z = [264, 263, 279]         # 专硕
XiHua_x = [264, 263, 273]         # 学硕
# 西交复试线[2020-2022]
XiJiao_z = [350, 360, 370]
XiJiao_x = [350, 320, 363]
# 电科复试线[2020-2022]
DianKe_z = [285, 300, 300]
DianKe_x = [340, 350, 340]
# 川大复试线[2020-2022]
ChuanDa_z = [340, 364, 350]
ChuanDa_x = [325, 348, 330]

# 绘制相关图形
plt.figure(figsize=(10, 5))             # 设置图片大小
plt.subplot(1, 2, 1)                    # 设置子图
plt.plot(YEARS[-3:], XiHua_z, marker='*', markersize=7, c='k', linewidth=1.5)
plt.plot(YEARS[-3:], XiJiao_z, marker='d', markersize=7, c='c', linewidth=1.5)
plt.plot(YEARS[-3:], DianKe_z, marker='.', markersize=7, c='b', linewidth=1.5)
plt.plot(YEARS[-3:], ChuanDa_z, marker='x', markersize=7, c='g', linewidth=1.5)
# plt.xlim([2020, 2022])                  # 手动设置横坐标范围
# plt.ylim([200, 500])                    # 手动设置纵坐标范围
plt.xlabel('年份', fontdict={'fontsize': 12})
plt.ylabel('分数', fontdict={'fontsize': 12})
plt.title('近3年西交/电科/川大专硕复试分数线', fontdict={'fontsize':12})
plt.legend(['西华-信息学院-电子信息(专硕)', '西交-信息学院-电子信息(专硕)', '电科-信通学院-电子信息(专硕)', '川大-电信学院-电子信息(专硕)'])
plt.subplot(1, 2, 2)
plt.plot(YEARS[-3:], XiHua_x, marker='*', markersize=7, c='k', linewidth=1.5)
plt.plot(YEARS[-3:], XiJiao_x, marker='d', markersize=7, c='c', linewidth=1.5)
plt.plot(YEARS[-3:], DianKe_x, marker='.', markersize=7, c='b', linewidth=1.5)
plt.plot(YEARS[-3:], ChuanDa_x, marker='*', markersize=7, c='g', linewidth=1.5)
# =================== 设置横纵坐标的范围 ======================== #
plt.xlim([2020, 2022])                  # 手动设置横坐标范围
plt.ylim([200, 500])                    # 手动设置纵坐标范围
# =================== 设置横纵坐标的范围 ======================== #
plt.xlabel('年份', fontdict={'fontsize': 12})
plt.ylabel('分数', fontdict={'fontsize': 12})
plt.title('近3年西交/电科/川大学硕复试分数线', fontdict={'fontsize':12})
plt.legend(['西华-信息学院-信通(学硕)', '西交-信息学院-信通(学硕)', '电科-信通学院-信通(学硕)', '川大-电信学院-信通(学硕)'])
plt.show()

     左边子图未设置横纵坐标范围,导致图例的位置出现在中部;右子图为设置横纵坐标范围后得到的结果。

     注意:上图横坐标年份出现小数点,不符合规范,可通过设置横纵坐标间距解决该问题。

  1.2 设置横纵坐标间距
# 年份
YEARS = [2018, 2019, 2020, 2021, 2022]
# 西华复试线[2020-2022]
XiHua_z = [264, 263, 279]         # 专硕
XiHua_x = [264, 263, 273]         # 学硕
# 西交复试线[2020-2022]
XiJiao_z = [350, 360, 370]
XiJiao_x = [350, 320, 363]
# 电科复试线[2020-2022]
DianKe_z = [285, 300, 300]
DianKe_x = [340, 350, 340]
# 川大复试线[2020-2022]
ChuanDa_z = [340, 364, 350]
ChuanDa_x = [325, 348, 330]

# 川大复试线[2020-2022]
ChuanDa_z = [340, 364, 350]
ChuanDa_x = [325, 348, 330]

# 绘制相关图形
plt.figure(figsize=(10, 5))             # 设置图片大小
plt.subplot(1, 2, 1)                    # 设置子图
plt.plot(YEARS[-3:], XiHua_z, marker='*', markersize=7, c='k', linewidth=1.5)
plt.plot(YEARS[-3:], XiJiao_z, marker='d', markersize=7, c='c', linewidth=1.5)
plt.plot(YEARS[-3:], DianKe_z, marker='.', markersize=7, c='b', linewidth=1.5)
plt.plot(YEARS[-3:], ChuanDa_z, marker='x', markersize=7, c='g', linewidth=1.5)
plt.xlim([2020, 2022])                  # 手动设置横坐标范围
plt.ylim([200, 500])                    # 手动设置纵坐标范围
plt.xlabel('年份', fontdict={'fontsize': 12})
plt.ylabel('分数', fontdict={'fontsize': 12})
plt.title('近3年西交/电科/川大专硕复试分数线', fontdict={'fontsize':12})
plt.legend(['西华-信息学院-电子信息(专硕)', '西交-信息学院-电子信息(专硕)', '电科-信通学院-电子信息(专硕)', '川大-电信学院-电子信息(专硕)'])
plt.subplot(1, 2, 2)
plt.plot(YEARS[-3:], XiHua_x, marker='*', markersize=7, c='k', linewidth=1.5)
plt.plot(YEARS[-3:], XiJiao_x, marker='d', markersize=7, c='c', linewidth=1.5)
plt.plot(YEARS[-3:], DianKe_x, marker='.', markersize=7, c='b', linewidth=1.5)
plt.plot(YEARS[-3:], ChuanDa_x, marker='*', markersize=7, c='g', linewidth=1.5)
# =================== 设置横纵坐标的间距 ======================== #
ax = plt.gca()
x_space = MultipleLocator(1)
ax.xaxis.set_major_locator(x_space)
ay = plt.gca()
y_space = MultipleLocator(25)
ay.yaxis.set_major_locator(y_space)
# =================== 设置横纵坐标的间距 ======================== #
plt.xlim([2020, 2022])                  # 手动设置横坐标范围
plt.ylim([200, 500])                    # 手动设置纵坐标范围
plt.xlabel('年份', fontdict={'fontsize': 12})
plt.ylabel('分数', fontdict={'fontsize': 12})
plt.title('近3年西交/电科/川大学硕复试分数线', fontdict={'fontsize':12})
plt.legend(['西华-信息学院-信通(学硕)', '西交-信息学院-信通(学硕)', '电科-信通学院-信通(学硕)', '川大-电信学院-信通(学硕)'])
plt.show()

     左边子图未设置横纵坐标间距,导致横坐标年份出现小数;右子图为设置横纵坐标间距后得到的结果。

     注意:上面所有示例均仅能得到各年份复试分数线的趋势,无法从图中准确获悉各年份具体的录取分数,可通过为图中点设置相应数值解决。

  1.3 为图中点设置相应数值

    以2018年~2022年全国考研报名/录取人数为例,

# 年份
YEARS = [2018, 2019, 2020, 2021, 2022]
# 18-22年报考人数
NUMS_B = [238, 290, 341, 377, 457]
# 18-21年录取人数
NUMS_L = [76.25, 81.13, 110.66, 117.7]

plt.figure(figsize=(5, 4))
plt.plot(YEARS, NUMS_B,  marker='.', markersize=7, c='b', linewidth=1.5)
plt.plot(YEARS[:4], NUMS_L, marker='d', markersize=7, c='r', linewidth=1.5)
ax = plt.gca()
x_space = MultipleLocator(1)
ax.xaxis.set_major_locator(x_space)

# =================== 相应点添加具体数值 ======================== #
# 为报名人数相应点添加具体数值
for x,y in zip(YEARS,NUMS_B):
    plt.text(x, y+7, '%.0f' % y, ha='center', va='bottom', fontdict={'fontsize': 12})
# 为录取人数相应点添加具体数值
for x, y in zip(YEARS[:4], NUMS_L):
    plt.text(x, y + 8, '%.0f' % y, ha='center', va='bottom', fontdict={'fontsize': 12})
# =================== 相应点添加具体数值 ======================== #

plt.xlabel('年份/年', fontdict={'fontsize': 12})
plt.ylabel('人数/万', fontdict={'fontsize': 12})
plt.ylim([0, 500])            # 手动设置横纵坐标范围
plt.title('近5年考研报名/录取人数', fontdict={'fontsize':12})
plt.legend(['报名人数', '录取人数'])
plt.show()
    备注,常用的marker: 'D', 'd', 'o', '.', '*', '^', 'v'; 常用的颜色:'c', 'r', 'g', 'k', 'b'

二、参考链接

     1、Matplotlib常见图形绘制
     2、订单可视化分析
     3、常用marker、线型和颜色

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值