Matplotlib 및 Pandas를 사용하여 올바른 간격과 정확한 주석으로 그룹화된 막대 차트를 만드는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-03 12:23:29
원래의
1044명이 탐색했습니다.

How to create a grouped bar chart with correct spacing and accurate annotations using Matplotlib and Pandas?

그룹 막대 차트 그리기 및 주석 달기

오류 분석

Matplotlib을 사용하여 Python에서 그룹 막대 차트를 생성하기 위해 제공된 코드에 오류가 있습니다. 특히 w 값이 올바르지 않으며 자동 라벨을 사용하는 주석 배치가 잘못 정렬되었습니다.

수정된 w 값:

대신 w 값은 0.8/3이어야 합니다. 막대 사이의 적절한 간격을 보장하려면 0.8을 사용하세요.

Pandas 플롯을 사용하여 그리기

그룹화된 막대 차트를 그리는 더 간단한 접근 방식은 pandas DataFrames의 플롯 방법을 사용하는 것입니다. 이 방법을 사용하면 플로팅과 주석이 쉬워집니다.

향상된 주석 배치

막대 위에 주석을 정확하게 배치하려면 다음 코드를 사용하세요.

for p in ax.patches:
    ax.annotate(f'{p.get_height():0.2f}', (p.get_x() + p.get_width() / 2., p.get_height()), ha = 'center', va = 'center', xytext = (0, 10), textcoords = 'offset points')
로그인 후 복사

여기서 오프셋은 포인트는 (0, 10)으로 설정되어 주석이 막대 중앙 바로 위에 정렬됩니다.

전체 코드

수정 및 개선된 코드는 다음과 같습니다.

import pandas as pd
import matplotlib.pyplot as plt

df = pandas.DataFrame({
    'Very interested': [1332, 1688, 429, 1340, 1263, 1629],
    'Somewhat interested': [729, 444, 1081, 734, 770, 477],
    'Not interested': [127, 60, 610, 102, 136, 74]
    }, index=['Big Data (Spark / Hadoop)', 'Data Analysis / Statistics', 'Data Journalism', 'Data Visualization', 'Deep Learning', 'Machine Learning'])

colors = ['#5cb85c', '#5bc0de', '#d9534f']
fig, ax = plt.subplots(figsize=(20, 8))

ax.set_ylabel('Percentage', fontsize=14)
ax.set_title(
    "The percentage of the respondents' interest in the different data science Area",
    fontsize=16)
ax.set_xticklabels(ax.get_xticklabels(), rotation=0)

df.plot.bar(ax=ax, color=colors)

for p in ax.patches:
    ax.annotate(f'{p.get_height():0.2f}', (p.get_x() + p.get_width() / 2., p.get_height()), ha='center', va='center', xytext=(0, 10), textcoords='offset points')

plt.show()
로그인 후 복사

위 내용은 Matplotlib 및 Pandas를 사용하여 올바른 간격과 정확한 주석으로 그룹화된 막대 차트를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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