簡體   English   中英

為什么我覺得 matplotlib 中的刻度方向選擇受到限制? (控制單獨的軸)

[英]Why do I feel restricted with my tick direction choices in matplotlib? (controlling separate axes)

我已經使用“in”、“out”在 rcParams 中設置刻度方向,打開和關閉左側、右側、底部和頂部刻度,但我還沒有找到一種方法來做一些看起來如此簡單的事情。 我只希望左右 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 筆記本中執行此操作。

編輯:我找到了一個相當可以接受的解決方案並將其放在評論中。

因此,經過聰明同事的一些修補和輸入,我最好的解決方案是這樣的:

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")

滴答控制

重要的部分似乎是使用axisartist 創建子圖,因為當我嘗試使用“plt.subplots()”時,我在嘗試調用axis["bottom"] 時會出錯。

這對我來說很奇怪,因為我認為 axisartist 總是用來用 matplotlib 繪制軸。 我很想聽聽比我了解得更透徹的人的更詳細的解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM