为什么我觉得matplotlib中的滴答方向选择受到限制? (控制单独的轴)

时间:2017-02-07 22:00:55

标签: python matplotlib jupyter

我在rcParams中设置了使用“in”,“out”设置滴答方向,打开和关闭左,右,底部和顶部刻度,但我还没有找到一种方法来做一些看似如此的事情简单。我只想让左右y轴刻度向左,而顶部和底部的x轴刻面朝下。

我该怎么做? 有没有办法在Tick对象制作完成后更改它们?

这是我的一小部分,我可能无法完全理解这些事情:

from pylab import *
from numpy import *
import matplotlib.pyplot as plt
% matplotlib inline

plt.rc("font",size=18)
plt.rc("figure",figsize=(14,3.5))
matplotlib.rcParams.update({'ytick.left': True})
rc("ytick",direction="in")
matplotlib.rcParams.update({'ytick.right': True})
rc("ytick",direction="out")
#rc("ytick.major",left=True)
#rc("ytick.major",right=True)
#plt.rc("ytick",left=False)

# test
y = [2,3,4,5,6,7,8,9,12,13,4,23,23,34,3]
x = [i for i in range(len(y))]
plot(x,y)

现在我正试图在Jupyter笔记本中这样做。

编辑:我找到了一个相当可接受的解决方案并将其放在评论中。

1 个答案:

答案 0 :(得分:0)

因此,经过聪明的同事的一些修改和投入,我最好的解决方案就是:

import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as aa
% matplotlib inline

y = array([3,2,4,5,7,8])
x = [i for i in range(len(y))]

fig = plt.figure()

#*********************************************************
#****************** Here's the magic**********************
#*********************************************************
ax = aa.Subplot(fig,111) # 1 row, 1 column, 1st plot
fig.add_subplot(ax)

ax.axis["bottom","left"].major_ticks.set_tick_out(True)
ax.axis["bottom","left"].minor_ticks.set_tick_out(True)
ax.axis["top","right"].major_ticks.set_tick_out(False)
ax.axis["top","right"].minor_ticks.set_tick_out(False)

#*********************************************************

ax.plot(x,y)
ax.plot(x,y2)
#ax.set_ylim(0,30)
ax.set_yscale("log")
ax.set_xscale("log")

tickCtrl

重要的部分似乎是使用axartist来创建子图,因为当我尝试使用" plt.subplots()"尝试调用轴["底部"]时出错。

这对我来说很奇怪,因为我认为axartist总是习惯用matplotlib绘制轴。我喜欢听到比我更透彻理解的人更详细的解释。