Python3(Matplotlib)× NetworkXで湾曲したエッジを持つグラフを描画する方法
Python3でNetworkXを使用して、湾曲したエッジ(曲線の辺)を持つグラフを作成するには、connectionstyle="arc3, rad=0.4"を指定します。この設定により、ノード間を結ぶエッジが直線ではなく弧を描くように描画され、特に有向グラフにおいて双方向のエッジを見分けやすくなります。
手順
- 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- エッジ・名前・グラフ属性を指定してグラフを初期化します。
- 作成したグラフにノードを追加します。
- あるノードから別のノードへエッジを追加します。
- connectionstyle="arc3, rad=0.4"を指定して、MatplotlibでグラフGを描画します。
- 図を表示するにはshow()メソッドを使用します。
コード例
import matplotlib.pylab as plt import networkx as nx plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True G = nx.DiGraph() pos = nx.spring_layout(G) G.add_nodes_from([1, 2, 3, 4]) G.add_edges_from([(1, 2), (2, 4), (2, 3), (4, 1)]) nx.draw(G, with_labels=True, connectionstyle="arc3,rad=0.4") plt.show()
コードの解説
まずmatplotlib.pylabとnetworkxをインポートし、rcParamsで図のサイズを7.50×3.50に設定します。nx.DiGraph()で有向グラフを作成し、add_nodes_from()でノード1〜4を追加、add_edges_from()で4本のエッジを登録します。描画時のポイントはconnectionstyle="arc3,rad=0.4"の部分です。パラメータradの値を大きくするとエッジの弯曲度が強くなり、小さく(0に近づけると)直線に近づきます。また、with_labels=Trueを指定することで、各ノードに番号ラベルが表示されます。
出力結果

上記のコードを実行すると、すべてのエッジが滑らかに湾曲した有向グラフが表示されます。双方向につながるノード同士(例:ノード1とノード4)でも、それぞれのエッジが異なる弧として描き分けられるため、矢印の向きが視覚的に把握しやすくなります。
-
Matplotlibでエッジカラー付きの長方形を描画する方法
Matplotlibで長方形にエッジカラー(枠線の色)を設定して描画するには、以下の手順に従います。figure() メソッドを使用して、新しい図を作成するか、既存の図をアクティブにします。add_subplot() メソッドで、現在の図にサブプロット(Axes)を追加します。Rectangle() クラスを使用して長方形のインスタンスを作成し、edgecolor(枠線の色)と linewidth(枠線の太さ)を指定します。塗りつぶしの色は facecolor で設定できます。add_patch() メソッドを使って、作成した長方形をプロットに追加します。長方形の中にテキストを配置したい場合は
-
Matplotlibでnumpyのdatetime64型の時系列データをプロットする方法
PythonのMatplotlibを使って時系列データをグラフ化する方法を解説します。日付や時刻のデータ(datetime64型など)は、そのままplot()メソッドに渡すだけで自動的に軸に反映されるため、非常に簡単です。基本的な手順numpyを使ってx(日時)とy(数値)のデータを作成する。plot()メソッドで作成したxとyをプロットする。show()メソッドで図を表示する。サンプルコードimport matplotlib.pyplot as plt import datetime import numpy as np plt.rcParams[figure.figsize] = [7.