怎么挪动_Matplotlib入门-3-plt.gca( )挪动坐标轴

753714efd988f3f91423d79db03fa40a.png

Matplotlib中与坐标轴相关的常用操作 中,最终的成图还是留有瑕疵。图中的坐标轴看起来不那么舒服,原因在于不是日常所用的过原点(0, 0)的坐标系,那么本文在前文基础上进行坐标轴位置优化。


利用plt.gca( )进行坐标轴的移动

首先观察画布上面的坐标轴,如下图

dcec0705bd9ae739f7ee4ebaa7bfb302.png

上图中,用红色标识出的黑色边界框线在Matplotlib中被称为spines,中文翻译为脊柱......在我理解看来,意思是这些边界框线是坐标轴区域的“支柱”

那么,我们最终要挪动的其实就是这四个“支柱”

且所有的操作均在plt.gca( )中完成,gca就是get current axes的意思


(1)获取当前坐标轴位置并移动

既然要动,那么就要在获取当前坐标轴位置的基础上进行挪动。上代码,上图直观感受

import matplotlib.pyplot as plt

# 这里建立的画布大小是5*5的,并不是坐标轴范围,使用“十字按钮”拖动你就懂了!
plt.figure(figsize = (5,5))
plt.plot()  # 画个只有坐标系的图(因为没有传参数,所以显示空白)

ax = plt.gca()

# 获取你想要挪动的坐标轴,这里只有顶部、底部、左、右四个方向参数
ax.xaxis.set_ticks_position('bottom')  #  要挪动底部的X轴,所以先目光锁定底部!

# 在这里,position位置参数有三种,这里用到了“按Y轴刻度位置挪动”
# 'data'表示按数值挪动,其后数字代表挪动到Y轴的刻度值
ax.spines['bottom'].set_position(('data',0))

plt.show()

d8236daef070ea9c5204450a937dfac4.png

同理,要挪动Y轴的代码如下

ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

最终成图结果如下图所示

38edbd6c90283d2ba99dc13f87167c5e.png

补充:set_position( )中除了‘data’以外还有‘outward’和‘axes’,自己去尝试效果


但是,作为一个有“洁癖”的人= =|||......上图实在是丑爆了!上面和右边的线是什么玩意!?

难道你忘了么,那是图的“支柱”...

怎么办?

删掉它!!!

你做梦呢,那是“支柱”!!!

......我不想要它两,丑死了

............

老马秀操作的时刻来了,擦亮你们的眼,发散你们的思维!!!

emmm......删不掉?那我让它两在我眼前“消失”


方法一:按照前面讲的,将处于右边和上面的“支柱”也挪到(0,0)位置

你看不见我看不见我,上代码,自行体会

import matplotlib.pyplot as plt

plt.figure(figsize = (5,5))
plt.plot()

ax = plt.gca()

ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

ax.xaxis.set_ticks_position('top')
ax.spines['top'].set_position(('data',0))

ax.yaxis.set_ticks_position('right')
ax.spines['right'].set_position(('data',0))

plt.show()

方法二:强行给这两个“支柱”涂上隐形涂料(获取其颜色并设置为none)

你看不见我看不见我,上代码,自行体会

import matplotlib.pyplot as plt

plt.figure(figsize = (5,5))
plt.plot()

ax = plt.gca()

ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

ax.spines['top'].set_color('none')  # 设置顶部支柱的颜色为空

ax.spines['right'].set_color('none')  # 设置右边支柱的颜色为空

plt.show()

上述两种方法最终成图效果如下

2b4cdfea3ea958b820036a7d39daa29a.png

完美的,是我们想要的结果!


伸手党福利,接 Matplotlib中与坐标轴相关的常用操作 优化代码和图如下

import matplotlib.pyplot as plt
import numpy as np

n = np.linspace(-5, 4, 30)
m1 = 3 * n + 2
m2 = n ** 2

plt.plot(n, m1, 'r-.', n, m2, 'b')

plt.xlim((-2, 4))
plt.ylim((-5, 15))

x_ticks = np.linspace(-5, 4, 10)
plt.xticks(x_ticks)

plt.yticks([-2.5, 7.5], ['hate','love'])

plt.xlabel('XXX')
plt.ylabel('YYY')

ax = plt.gca()

ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')

plt.show()

e735fb43339c32d9cf9fb8c26127dcd1.png

又会有人“得寸进尺”的问,还是不美观,你的坐标轴标签‘XXX’和‘YYY’位置一点都不好看= =|||

且听下回娓娓道来

不点赞不关注,还要求这么多......今天的课到此为止,收摊儿咯~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值