首页 > 解决方案 > Numpy数组中xaxis的模拟功能

问题描述

我正在寻找任何与 axis.使用类似的功能, numpy array 我正在尝试生成子图,并且我设置了不同的参数来生成三个图。这是我正在使用的包:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import (AutoMinorLocator, MultipleLocator)

子图共享 x 轴;这个轴的范围是 0 到 1200。所以,我的目标是分成 50 (0; 50; 100;... ;1200)。为此,我正在使用以下功能:

axs.xaxis.set_major_locator(MultipleLocator(50))

但是,这给了我这个错误

AttributeError: 'numpy.ndarray' object has no attribute 'xaxis'

我部分理解了这个问题,所以我搜索了一个类似的功能numpy array 来做到这一点。也许这个功能可以工作:

numpy.apply_along_axis() 

但是,我还不能解决这个问题。如果有人需要,这是完整的脚本。

# Set the style of the plot
plt.style.use("seaborn")
# Set the data for each method (SLAC, FEL and MEME)
data_SLAC = pd.read_csv("S_SLAC.csv")
dN_SLAC = data_SLAC["dN"]
dS_SLAC = data_SLAC["dS"]
Omega_SLAC = data_SLAC["P [dN/dS > 1]"]

data_FEL = pd.read_csv("S_FEL.csv")
dN_FEL = data_FEL["beta"]
dS_FEL = data_FEL["alpha"]
Omega_FEL = data_FEL["omega"]

data_MEME = pd.read_csv("S_MEME.csv")
dN_MEME = data_MEME["&beta"]
dS_MEME = data_MEME["&alpha"]
Omega_MEME_positive = data_MEME["&beta+"]
Omega_MEME_neutral = data_MEME["&beta-"]
# Set the parameters of the subplot
fig, axs = plt.subplots(3,1, sharex=True, sharey=False, figsize=(16,5))
#ax.plot(dN, label="dN")
#ax.plot(dS, label="dS")
axs[0].plot(Omega_SLAC, label="dN/dS > 1")
axs[1].plot(Omega_FEL, label="dN/dS > 1")
axs[2].plot(Omega_MEME_positive, label="dN/dS > 1")

#### HERE THE LINE OF THE POST!

# Set the range of values in x-axis
axs.xaxis.set_major_locator(MultipleLocator(50))
# Set title of each subplot
axs.set_title("Selection Score for each Method")
# Fix the distribution of each plot
plt.tight_layout()
plt.plot()

好吧,我正在寻找解决问题的任何建议。欢迎任何评论或帮助!感谢!

标签: pythonnumpymatplotlib

解决方案


将此行添加到脚本中:

for ax in axs:
    ax.xaxis.set_major_locator(MultipleLocator(50))

推荐阅读