2016-12-12 2 views
0

MatplotlibグラフをTkinterアプリに統合しています。私はグラフの書式設定を移植するのに問題があります。tkinterアプリのMatplotlibグラフ:グラフビジュアルの変更方法

私はMPLチュートリアルを出発点として使用しています。例えばset_legend()を追加できないことに気づいたか、またはset_xticks(x, rotation=80)などを使ってx軸のティックが好きな角度を渡せません

どのようにこれらのパラメータを渡しますか?あるいは、tkinterアプリのグラフ上で実際に実行できる変更の量は限られていますか?

これは私が修正していますサンプルコードです:

import matplotlib 
matplotlib.use('TkAgg') 

from numpy import arange, sin, pi 
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg 
from matplotlib.figure import Figure 

import sys 
if sys.version_info[0] < 3: 
    import Tkinter as Tk 
else: 
    import tkinter as Tk 


def destroy(e): 
    sys.exit() 

root = Tk.Tk() 
root.wm_title("Embedding in TK") 


f = Figure(figsize=(5, 4), dpi=100) 
a = f.add_subplot(111) 
t = arange(0.0, 3.0, 0.01) 
s = sin(2*pi*t) 

a.plot(s) 
a.set_title('Tk embedding') 
a.set_xlabel('X axis label') 
a.set_ylabel('Y label') 
a.set_xticks(t, rotation=45) 


# a tk.DrawingArea 
canvas = FigureCanvasTkAgg(f, master=root) 
canvas.show() 
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1) 

canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1) 

button = Tk.Button(master=root, text='Quit', command=sys.exit) 
button.pack(side=Tk.BOTTOM) 

Tk.mainloop() 
+0

これを実行できるのであれば、tkアプリケーションのコンテキストで行うことができます。あなたはstaefull pyplotの方法の代わりにOOの方法を使用する必要があります(OOの方法は実際には_more_ powerを持っています)。 – tacaswell

+0

詳細を教えてください。私がmatplotlibとtkinterを組み立てたのはこれが初めてです。ありがとう –

答えて

0

まず、あなたの例を動作させるには:軸は(いくつかのラベルを設定する必要があります凡例を作成するためにticklabelsと.legend()を設定する方法.set_xticklabelsを持っています最初にプロット)。

f = Figure(figsize=(5, 4), dpi=100) 
a = f.add_subplot(111) 
t = arange(0.0, 3.0, 0.01) 
s = sin(2*pi*t) 

a.plot(s, label="label") 
a.set_title('Tk embedding') 
a.set_xlabel('X axis label') 
a.set_ylabel('Y label') 
a.set_xticklabels(t, rotation=45) 
a.legend() 

通常、ここではクラスのインスタンスで操作しています。 f = Figure(figsize=(5, 4), dpi=100)は、Figureのインスタンスを作成します。このインスタンスにはaxesというインスタンスを返すメソッドadd_subplotがあり、ここにはaと呼ばれます。 (通常は代わりにaxを使用します)。 にはプロットに使用できるすべてのメソッドが用意されています。axes API documentation

+0

うわー、非常に直感的ではありません。名前はset_xtickではなくset_xticklabelです。伝説はセットなしで行く。ありがとう! –

+0

私は、pyplot状態マシンとオブジェクト指向APIとの間の命名の違いがあまり直感的ではないことに同意します。しかし主に、ステートマシンの場合は「pyplot +コマンド」、OOインターフェースの場合は「matplotlib figure + command」を検索することで、検索エンジンで必要なものを見つけることができます。 – ImportanceOfBeingErnest

関連する問題