簡體   English   中英

Matplotlib:刪除子圖中的科學記數法

[英]Matplotlib: Remove scientific notation in subplot

我想創建一個包含四個子圖的圖形。 連續的每個圖共享相同的y軸,同一列中的圖共享相同的x軸。 在每個軸上我使用科學記數法。 雖然我可以使用ticklabel_format刪除刻度ticklabel_format ,但這並不會刪除軸上的指數。 使用ax1.xaxis.set_visible(False)x-axis1e5將被刪除,但也會刪除刻度線。 如何在保留刻度線的同時僅刪除與另一個軸共用軸的子圖上的1eX 例如,如何擺脫子圖2中的1e51e2

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()

ax3 = fig.add_subplot(223)
ax1 = fig.add_subplot(221, sharex = ax3)
ax4 = fig.add_subplot(224, sharey = ax3)
ax2 = fig.add_subplot(222, sharex = ax4, sharey = ax1)

#First plot
x = np.arange(0, 10**5, 100)
y = x
ax1.plot(x,y)
ax1.set_title('Subplot 1')

# Third plot
y = -x
ax3.plot(x,y)
ax3.set_title('Subplot 3')

#Second plot
x = np.arange(0, 100)
y = 10**3 * x + 100
ax2.plot(x,y)
ax2.set_title('Subplot 2')

#Fourth plot
y = -10**3 * x - 100
ax4.plot(x,y)
ax4.set_title('Subplot 4')

ax4.ticklabel_format(style = 'sci', axis='x', scilimits=(0,0))
ax3.ticklabel_format(style = 'sci', axis='x', scilimits=(0,0))
ax1.ticklabel_format(style = 'sci', axis='y', scilimits=(0,0))
ax3.ticklabel_format(style = 'sci', axis='y', scilimits=(0,0))

plt.setp(ax1.get_xticklabels(), visible=False)
plt.setp(ax2.get_xticklabels(), visible=False)
plt.setp(ax2.get_yticklabels(), visible=False)
plt.setp(ax4.get_yticklabels(), visible=False)

plt.show()

收益:

在此輸入圖像描述

如果為每個軸添加這些線(例如ax1 ):

ax1.xaxis.get_offset_text().set_visible(False)
ax1.yaxis.get_offset_text().set_visible(False)

這將從兩個軸中刪除科學記數法文本。

將第一部分修改為:

ax3 = fig.add_subplot(223)
ax1 = fig.add_subplot(221, sharex = ax3)
ax4 = fig.add_subplot(224)
ax2 = fig.add_subplot(222, sharex = ax4)

然后添加:

ax2.axes.xaxis.set_ticklabels([])
ax2.axes.yaxis.set_ticklabels([])
ax4.axes.yaxis.set_ticklabels([])
ax4.axes.yaxis.set_ticklabels([])

暫無
暫無

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

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