フィルターのクリア

Empty figure window when plotted from Python

4 ビュー (過去 30 日間)
SHC
SHC 2024 年 4 月 22 日
コメント済み: SHC 2024 年 4 月 26 日
Hi,
I tried to plot a MATLAB figure using a MATLAB funciton from Python script.
I used the following MATLAB funtion (plot_test.m) to draw a simple line graph:
function h = plot_test()
clear; close all;
h = plot(1:10, 2:11, 'o:')
grid on;
end
I called the MATLAB funciton from Python (plot_test.py):
import matlab.engine
eng = matlab.engine.start_matlab()
h = eng.plot_test()
input("Press Enter to quit...")
eng.quit()
The MATLAB figure window was opened. But it was empty.
Could you help me?
The system environments are as follows:
  • MATLAB: R2023b
  • Python: 3.11.8
  • OS: Fedora Linux 6.8.6-100.fc38.x86_64
  • Shell: bash 5.2.26
  • Resolution: 1680x1050
  • Gnome:44.1
I suspect that the resolution might have some impact on this result because when I run the same code in another Fedora machine with 1920x1080 monitor, it shows the graph.
  1 件のコメント
vidyesh
vidyesh 2024 年 4 月 22 日
Can you share MATLAB version and python version as well.

サインインしてコメントする。

回答 (1 件)

Debadipto
Debadipto 2024 年 4 月 25 日
Hi @SHC,
To ensure that the MATLAB figure is correctly displayed when called from a Python script, you can make modifications to the MATLAB function to explicitly set the figure's visibility and to force immediate rendering of the plot. Here's how you can adjust your "plot_test.m" MATLAB function:
function h = plot_test()
clear; close all;
figure('Visible', 'on'); % Explicitly set the figure to be visible
h = plot(1:10, 2:11, 'o:');
grid on;
drawnow; % Force MATLAB to draw the figure's content immediately
pause(0.1); % Introduce a brief pause to ensure the content is fully rendered
end
Hope it helps!
  1 件のコメント
SHC
SHC 2024 年 4 月 26 日
Thank you but it did not work.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCall MATLAB from Python についてさらに検索

タグ

製品


リリース

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by