Matplotlib は、Python で最も有名な描画ライブラリであり、対話型描画に非常に適した matlab に似た一連のコマンド API を提供します。また、描画コントロールとして簡単に使用したり、GUI アプリケーションに埋め込んだりすることもできます。ドキュメントは非常に充実しており、ギャラリー ページには何百ものサムネイルがあり、それらを開くとすべてソース プログラムが含まれています。したがって、特定の種類の図を描画する必要がある場合は、このページを参照/コピー/ペーストするだけで基本的に作業は完了します。
この記事では、matplotlib を使用して、最も単純なバーから複雑なバーまでを段階的に構築します。最も単純なバーは何ですか? 次のステートメントを見れば、それがどれほど単純であるかがわかります:
import matplotlib.pyplot as plt plt.bar(left = 0,height = 1) plt.show()
実行効果:
はい、これは私がこれまで見た中で最も単純な描画ステートメントです。まず matplotlib.pyplot をインポートし、次にその bar メソッドを直接呼び出し、最後に show を使用して画像を表示しました。 bar の 2 つのパラメーターについて説明します。
left: 列の左端の位置。1 を指定すると、現在の列の左端の x 値は 1.0 になります。
height: これは高さです。列の Y 軸
left と height の値です。別の値 (この場合は列) を使用することに加えて、タプル (この場合はそれを表します) で置き換えることもできます。複数の長方形)。たとえば、次の例では、
import matplotlib.pyplot as plt plt.bar(left = (0,1),height = (1,0.5)) plt.show()
left = (0,1) は、合計 2 つの長方形があり、最初の長方形の左端が 0 で、2 番目の長方形の左端が 0 であることを意味することがわかります。 2番目は1です。高さパラメータは同じです。
もちろん、これら 2 つの長方形は「太すぎる」と思われるかもしれません。この時点で、バーの幅パラメータを指定することで幅を設定できます。
import matplotlib.pyplot as plt plt.bar(left = (0,1),height = (1,0.5),width = 0.35) plt.show()
このとき、x 軸と y 軸の説明を指定する必要があります。たとえば、X 軸は性別、Y 軸は人数です。実装も非常に簡単です。コードを見てください:
import matplotlib.pyplot as plt plt.xlabel(u'性别') plt.ylabel(u'人数') plt.bar(left = (0,1),height = (1,0.5),width = 0.35) plt.show()
matplotlib は Unicode のみをサポートしているため、ここでは中国語に u を使用する必要があることに注意してください (3.0 以降では使用されないようです。私は 2.7 を使用しています)。次に、X 軸上の各バーを示します。たとえば、1 番目は「男性」、2 番目は「女性」です。
import matplotlib.pyplot as plt plt.xlabel(u'性别') plt.ylabel(u'人数') plt.xticks((0,1),(u'男',u'女')) plt.bar(left = (0,1),height = (1,0.5),width = 0.35) plt.show()
plt.xticks の使用法は、前に説明した left と height の使用法に似ています。複数のバーがある場合、それは複数の次元のタプルです。 1 つ目はテキストの場所、2 つ目は特定のテキストの説明です。しかし、ここには明らかに問題があります。指定した位置は多少「オフセット」されており、理想的な状態は各長方形の中央にあるはずです。 (0,1)=>( (0+0.35)/2, (1+0.35)/2) と変更することもできますが、これはさらに面倒です。 barメソッドでalign="center"を直接指定することでテキストを中央揃えにすることができます
import matplotlib.pyplot as plt plt.xlabel(u'性别') plt.ylabel(u'人数') plt.xticks((0,1),(u'男',u'女')) plt.bar(left = (0,1),height = (1,0.5),width = 0.35,align="center") plt.show()
次に、アイコンにタイトルを追加することもできます。
plt.title(u"性别比例分析")
もちろん、凡例も不可欠です:
import matplotlib.pyplot as plt plt.xlabel(u'性别') plt.ylabel(u'人数') plt.title(u"性别比例分析") plt.xticks((0,1),(u'男',u'女')) rect = plt.bar(left = (0,1),height = (1,0.5),width = 0.35,align="center") plt.legend((rect,),(u"图例",)) plt.show()
ここでの凡例メソッド、内部のパラメータはタプルである必要があることに注意してください。凡例が 1 つしかない場合でも、正しく表示されません。
次に、各長方形の特定の点 Y 値をマークすることもできます。ここでは、一般的なメソッドを使用する必要があります:
def autolabel(rects): for rect in rects: height = rect.get_height() plt.text(rect.get_x()+rect.get_width()/2., 1.03*height, '%s' % float(height))
plt.text のパラメータは、x 座標、y 座標、および表示されるテキストです。したがって、呼び出しコードは次のとおりです。
import matplotlib.pyplot as plt def autolabel(rects): for rect in rects: height = rect.get_height() plt.text(rect.get_x()+rect.get_width()/2., 1.03*height, '%s' % float(height)) plt.xlabel(u'性别') plt.ylabel(u'人数') plt.title(u"性别比例分析") plt.xticks((0,1),(u'男',u'女')) rect = plt.bar(left = (0,1),height = (1,0.5),width = 0.35,align="center") plt.legend((rect,),(u"图例",)) autolabel(rect) plt.show()
この時点で、グラフィックは基本的に完成していますが、上部近くに長方形があり、あまり見栄えがよくないことがわかります。ある程度距離を置いて出た方が良いでしょう。この設定に特有のプロパティは見つかりませんでした。ただし、ちょっとしたコツを使ってやりました。 bar 属性の yerr パラメータです。このパラメータが設定されると、対応する四角形に垂直線が表示されます。これが何を意味するのかはわかりません。ただし、この値を非常に小さい値に設定すると、上のスペースは自動的に空けられます。図に示すように:
rect = plt.bar(left = (0,1),height = (1,0.5),width = 0.35,align="center",yerr=0.000001)
左側と右側については、空白を残すことができるかどうかわかりません(xerrパラメータが機能しません)