カスタム コードを使用して棒グラフ グループにラベルを付ける
棒グラフにグループ ラベルを追加するには、特に次のような場合に検討できる 1 つのアプローチが考えられます。 matplotlib のネイティブな解決策は利用できません。カスタム関数を作成することです。方法は次のとおりです:
def label_group_bar(ax, data): # Prepare data groups = mk_groups(data) xy = groups.pop() x, y = zip(*xy) ly = len(y) # Create bar chart xticks = range(1, ly + 1) ax.bar(xticks, y, align='center') ax.set_xticks(xticks) ax.set_xticklabels(x) ax.set_xlim(.5, ly + .5) ax.yaxis.grid(True) # Add lines for group separation scale = 1. / ly for pos in range(ly + 1): add_line(ax, pos * scale, -.1) # Add labels below groups ypos = -.2 while groups: group = groups.pop() pos = 0 for label, rpos in group: lxpos = (pos + .5 * rpos) * scale ax.text(lxpos, ypos, label, ha='center', transform=ax.transAxes) add_line(ax, pos * scale, ypos) pos += rpos add_line(ax, pos * scale, ypos) ypos -= .1
データの準備と行の作成を処理するには:
# Extract data groups and prepare for custom function def mk_groups(data): ... # Create vertical line in plot def add_line(ax, xpos, ypos): ...
これを使用するには解決策:
# Import necessary modules import matplotlib.pyplot as plt # Sample data data = ... # Create plot and apply custom function fig = plt.figure() ax = fig.add_subplot(1,1,1) label_group_bar(ax, data) fig.subplots_adjust(bottom=0.3) fig.savefig('label_group_bar_example.png')
このアプローチでは、棒グラフにグループ ラベルを追加して、データの視覚化をより有益なものにすることができます。
注: 代替ソリューション、さらに最適化されたソリューションについては、さらなる検討を歓迎します。
以上がカスタム コードを使用して Matplotlib 棒グラフにグループ ラベルを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。