

タイトル通りですがうまくいきません。

graph_test.py

[code]

    import numpy as np
    import matplotlib.pyplot as plt
    
    def graph_test1():   
        plt.title('test')
        plt.xlabel("x")
        plt.ylabel("y")        
        array_x = np.arange(0,5,1)
        array_y = [1,2,3,4,5] 
        plt.plot(array_x,array_y,label="value")
        plt.legend()
        plt.show()
    
    def graph_test2():   
        plt.title('test')
        plt.xlabel("x")
        plt.ylabel("y")        
        array_x = np.arange(0,5,1)
        array_y = [5,4,3,2,1] 
        plt.plot(array_x,array_y,label="value")
        plt.legend()
        plt.show()
    
    if __name__ == '__main__':
        graph_test1()
    graph_test2()
    
[/code]

start_test.py  
これは2つ起動方法を試しましたがどちらもうまくいきませんでした。

[code]

    import subprocess
    
    output = subprocess.check_output(['python','graph_test.py'])
    print("")
    print(output.decode())
    
    a = subprocess.call("python %s" % 'graph_test.py')  
    print(a)
    
[/code]

実行結果  
正しくグラフを出力するにはどのようにすればよいでしょうか？

[code]

    Figure(640x480)
    Figure(640x480)
    
    0
    
[/code]


CC BY-SA 4.0
2018-10-29T09:28:45.203
49764
2018-10-30T01:20:37.817
2018-10-29T11:54:19.350
30362
30362
question
python python3
グラフの描画プログラムを別のプログラムで起動する方法


質問のコードには問題はありません。`Figure(640x480)`という表示は、matplotlibのデフォルトのFigureオブジェクトなので正常な出力であり、正常終了しています。グラフが出力されないのは、環境の問題だと思われます。

PythonからPythonのコードを呼ぶ時は、subprocessを使わずにimportした方がいいと思います。`start_test.py`は、次のようになります。

[code]

    import graph_test
    
    graph_test.graph_test1()
    graph_test.graph_test2()
    
[/code]

`subprocess`を使うと環境依存になります。`subprocess`を使う場合は、公式ドキュメントのsubprocessのページの [Popen
コンストラクター](https://docs.python.org/ja/3/library/subprocess.html#popen-
constructor) の項目にあるプロセスの生成をよく理解してから使ったほうがいいと思われます。例えば、`subprocess.call("python
%s" % 'graph_test.py')`は、POSIXではエラーになり、`subprocess.call("python %s" %
'graph_test.py', shell=Tru)`とする必要があります。


CC BY-SA 4.0
2018-10-30T01:11:30.540
49772
2018-10-30T01:20:37.817
2018-10-30T01:20:37.817
15171
15171
49764
answer