4

私は現在、sagemath がホストするオンライン ワークブックを使用していくつかのグラフを作成しています。

これは、グラフを作成して生成するために作成しているコードの例です。

myplot = list_plot(zip(range(20), range(20)), color='red')
myplot2 = list_plot(zip(range(20), [i*2 for i in range(20)]), color='blue')
combined = myplot + myplot2
combined.show()

これは非常に基本的なもので、基本的には 2 つの散布図を重ね合わせたものです。

軸ラベル、凡例、およびオプションでタイトルを簡単に追加する方法はありますか?

軸ラベルを追加できるソリューションをハックすることができましたが、それは本当に醜くてばかげています。

from matplotlib.backends.backend_agg import FigureCanvasAgg 
def make_graph(plot, labels, figsize=6):
    mplot = plot.matplotlib(axes_labels=labels, figsize=figsize)
    mplot.set_canvas(FigureCanvasAgg(mplot))
    subplot = mplot.get_axes()[0]
    subplot.xaxis.set_label_coords(x=0.3,y=-0.12)
    return mplot

a = make_graph(combined, ['x axis label', 'y axis label'])
a.savefig('test.png')

軸ラベル、凡例、およびタイトルを追加する簡単な方法はありますか?

4

2 に答える 2

8

最終的に、sagemath のオブジェクトのドキュメントを見つけました。Graphics

私はこのようにしなければなりませんでした:

myplot = list_plot(
    zip(range(20), range(20)), 
    color='red', 
    legend_label='legend item 1')

myplot2 = list_plot(
    zip(range(20), [i*2 for i in range(20)]), 
    color='blue', 
    legend_label='legend item 2')

combined = myplot + myplot2

combined.axes_labels(['testing x axis', 'testing y axis'])
combined.legend(True)

combined.show(title='Testing title', frame=True, legend_loc="lower right")

titleメソッドがない理由と、軸を指定する必要がないのに内部でタイトルを指定する必要がある理由は完全showにはわかりませんが、これはうまくいくようです。

于 2012-09-29T17:59:18.740 に答える
-1
  • 軸ラベル: myplot.xlabel("text for x axis")myplot.ylabel("text for y axis")
  • 題名:myplot.title("My super plot")
  • label="Fancy plot"凡例:の呼び出しに引数を追加しplot、凡例を作成しますlegend()

詳細な説明については、あちこちを参照してください。

于 2012-09-29T06:07:07.627 に答える