Просто используйте «ax = fig.add_axes ([left, bottom, width, height])», если вы хотите точно контролировать макет фигуры. например
left = 0.05
bottom = 0.05
width = 0.9
height = 0.9
ax = fig.add_axes([left, bottom, width, height])
Я бы сделал это со свойством только для чтения и методом, который заполняет свойство.
Если вы знаете, что результат понадобится, вы можете загрузить его в начале - во время запуска службы, активации просмотра и т. Д.
Я в основном использую ReactiveUI в приложениях WPF, поэтому это будет выглядеть так:
// ViewModel constructor
GetResult = ReactiveCommand.CreateFromTask(async () => _model.GetResultAsync()); // notice that method is async
// there is also overload with CancelationToken
_result = GetResult.Retry(3).ToProperty(this, x => x.Result); // we can retry few times and we get change notification
GetResult.Subscribe(result =>{
// do something as soon as the result is loaded
});
GetResult.ThrownExceptions.Subscribe( errorHandler);
// ViewModel properties
private ObservableAsProperetyHelper<ResultType> _result;
public ResultType Result => _result.Value;
// view constructor
this.WhenActivated(d =>{ // d is CompositeDisposable for cleanup
ViewModel.GetResult.Execute().Subscribe().DisposeWith(d); // cancel command if the view is deactivated before it's finished
});
Таким образом, вы можете сделать асинхронный вызов в нужный момент и сохранить результат на потом. Вы также можете легко обновить результат - он становится грязным, если использовать только ленивые свойства.
С другой стороны, вы можете легко создать спиннер для загрузки:
_isBusy = GetResult.IsExecuting.ToProperty(this, x => x.IsBusy);
Я следовал этому шаблону в постоянно включенной службе Windows, в которой пользовательский HTTP-сервер работал в фоновом режиме. Вы можете await GetResult.Execute()
, если вы хотите навязать загрузку в определенный момент.
В моей практике этот паттерн демонстрирует очень мало недостатков - главный из них - шаблонный код, но при наличии надлежащих инструментов он может быть написан очень быстро.
Если вы создаете какое-либо приложение типа службы, консоль или что-то еще, шаблон MVVM по-прежнему очень полезен, вы просто не делаете представления.