사용자 정의 코드를 사용하여 Matplotlib 막대 차트에 그룹 레이블을 어떻게 추가할 수 있습니까?

Linda Hamilton
풀어 주다: 2024-11-17 09:41:03
원래의
286명이 탐색했습니다.

How Can I Add Group Labels to a Matplotlib Bar Chart Using Custom Code?

사용자 정의 코드를 사용하여 막대 차트 그룹 레이블 지정

막대 차트에 그룹 레이블을 추가하려면 특히 다음과 같은 경우에 고려할 수 있는 한 가지 접근 방식이 있습니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿