Эта ошибка возникает, среди прочего, когда у вас есть значения NaN в серии. Может быть так?
Эти функции NaN плохо обрабатываются функцией hist
matplotlib. Например:
s = pd.Series([1,2,3,2,2,3,5,2,3,2,np.nan])
fig, ax = plt.subplots()
ax.hist(s, alpha=0.9, color='blue')
производит ту же ошибку AttributeError: max must be larger than min in range parameter.
. Один из вариантов - это, например, удаление NaN перед построением графика. Это будет работать:
ax.hist(s.dropna(), alpha=0.9, color='blue')
Еще одна опция - использовать метод pandas hist
в вашей серии и предоставить axes[0]
ключевому слову ax
:
dfj2_MARKET1['VSPD1_perc'].hist(ax=axes[0], alpha=0.9, color='blue')
Если вы хотите использовать вызов приватного метода внутри функции инициализации, я сомневаюсь, что нет метода, кроме allow_any_instance_of
. А вставка строкового литерала the name
в определение метода является неправильным синтаксисом.
Тем не менее, вы можете реорганизовать свой код, чтобы использовать test double для упрощения тестирования.
Код ниже демонстрирует мою идею:
setup.rb
class Player
attr_reader :name
def initialize(name)
@name = name
end
end
class Setup
class Client
def cli_input
$stdin.gets.chomp.strip
end
end
attr_reader :player
def initialize(client)
@client = client
@player = new_player(cli_input)
end
private
def cli_input
@client.cli_input
end
def new_player(name)
Player.new(name)
end
end
setup_spec.rb
RSpec.describe Setup do
describe 'initialize' do
it 'creates a player assigned to a instance variable' do
client = Setup::Client.new
allow(client).to receive(:cli_input).and_return("John")
setup = Setup.new(client)
expect(setup.player.name).to eq('John')
end
end
end