Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python Matplotlib에서 사용자 정의 색상 및 컷 영역 크기로 4D 산점도를 그리는 방법은 무엇입니까?

<시간/>

소개..

산점도는 데이터를 2차원으로 표현하여 두 변수 사이에 관계가 있는지 여부를 확인할 때 매우 유용합니다. 산점도는 데이터가 X 및 Y 값이 있는 점으로 표시되는 차트입니다.

그것을 하는 방법..

1. 다음 명령어로 matplotlib를 설치합니다.

pip install matplotlib

2. matplotlib 가져오기

import matplotlib.pyplot as plt
tennis_stats = (('Federer', 20),('Nadal', 20),('Djokovic', 17),('Sampras', 14),('Emerson', 12),('laver', 11),('Murray', 3),('Wawrinka', 3),('Zverev', 0),('Theim', 1),('Medvedev',0),('Tsitsipas', 0),('Dimitrov', 0),('Rublev', 0))

3. 다음 단계는 모든 배열 형식으로 데이터를 준비하는 것입니다. 데이터베이스나 스프레드시트에서 데이터를 읽고 아래 형식으로 데이터를 포맷할 수도 있습니다.

titles = [title for player, title in tennis_stats]
players = [player for player, title in tennis_stats]

4. matplotlib의 다른 방법과 마찬가지로 .scatter의 매개변수에는 X 및 Y 값의 배열이 필요합니다.

*참고 -* X 및 Y 값은 모두 같은 크기여야 하며 데이터는 기본적으로 부동 소수점으로 변환됩니다.

plt.scatter(titles, players)


<matplotlib.collections.PathCollection at 0x28df3684ac0>

Python Matplotlib에서 사용자 정의 색상 및 컷 영역 크기로 4D 산점도를 그리는 방법은 무엇입니까?

5. 오, x축에 표시된 내 GrandSlam 타이틀은 부동 소수점입니다. 정수로 변환하고 아래 함수에 x축과 y축 제목도 추가하겠습니다. 축 포맷터는 .set_major_formatter로 덮어씁니다.

from matplotlib.ticker import FuncFormatter
def format_titles(title, pos):
return '{}'.format(int(title))

plt.gca().xaxis.set_major_formatter(FuncFormatter(format_titles))
plt.xlabel('Grandslam Titles')
plt.ylabel('Tennis Player')
plt.scatter(titles, players)

Python Matplotlib에서 사용자 정의 색상 및 컷 영역 크기로 4D 산점도를 그리는 방법은 무엇입니까?

6. 산점도를 단순한 2D 차트로 생각하지 마십시오. 산점도는 세 번째(영역)와 네 번째 차원(색상)도 추가할 수 있습니다. 아래에서 내가 무엇을 할 것인지 조금 설명하겠습니다.

먼저 선택한 색상을 정의한 다음 무작위로 색상을 선택하고 둘러보기 값을 지정하는 과정을 반복합니다.

알파 값은 각 점을 반투명하게 만들어 겹치는 부분을 볼 수 있도록 합니다. 이 값이 높을수록 포인트가 덜 투명해집니다.

import random

# define your own color scale.
random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F']

# set the number of colors similar to our data values
color = [random.choice(random_colors) for _ in range(len(titles))]

plt.scatter(titles, players, c=color, alpha=0.5)


<matplotlib.collections.PathCollection at 0x28df2242d00>

Python Matplotlib에서 사용자 정의 색상 및 컷 영역 크기로 4D 산점도를 그리는 방법은 무엇입니까?

7. 이제 표현의 크기/영역을 조금 더 크게 만들어 보겠습니다.

import random

# define your own color scale.
random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F']

# set the number of colors similar to our data values
color = [random.choice(random_colors) for _ in range(len(titles))]

# set the size
size = [(50 * random.random()) ** 2 for _ in range(len(titles))]

plt.gca().xaxis.set_major_formatter(FuncFormatter(format_titles))
plt.xlabel('Grandslam Titles')
plt.ylabel('Tennis Player')

plt.scatter(titles, players, c=color, s=size, alpha=0.1)


<matplotlib.collections.PathCollection at 0x28df22e2430>

Python Matplotlib에서 사용자 정의 색상 및 컷 영역 크기로 4D 산점도를 그리는 방법은 무엇입니까?

그래프의 궁극적인 목표는 데이터를 이해하기 쉽게 만드는 것임을 기억하십시오.

저는 산점도를 사용하여 수행할 수 있는 작업의 기본 사항을 보여주었습니다. 예를 들어 크기에 따라 색상을 지정하여 같은 크기의 모든 점을 같은 색상으로 만들면 데이터를 구별하는 데 도움이 될 수 있습니다.

자세히 알아보기 - https://matplotlib.org/.

마지막으로 모든 것을 통합합니다.

예시

# imports
import matplotlib.pyplot as plt
import random

# preparing data..
tennis_stats = (('Federer', 20),('Nadal', 20),('Djokovic', 17),('Sampras', 14),('Emerson', 12),('laver', 11),('Murray', 3),('Wawrinka', 3),('Zverev', 0),('Theim', 1),('Medvedev',0),('Tsitsipas', 0),('Dimitrov', 0),('Rublev', 0))

titles = [title for player, title in tennis_stats]
players = [player for player, title in tennis_stats]

# custom function
from matplotlib.ticker import FuncFormatter
def format_titles(title, pos):
return '{}'.format(int(title))

# define your own color scale.
random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F']

# set the number of colors similar to our data values
color = [random.choice(random_colors) for _ in range(len(titles))]

# set the size
size = [(50 * random.random()) ** 2 for _ in range(len(titles))]

plt.gca().xaxis.set_major_formatter(FuncFormatter(format_titles))
plt.xlabel('Grandslam Titles')
plt.ylabel('Tennis Player')

plt.scatter(titles, players, c=color, s=size, alpha=0.1)


<matplotlib.collections.PathCollection at 0x2aa7676b670>

Python Matplotlib에서 사용자 정의 색상 및 컷 영역 크기로 4D 산점도를 그리는 방법은 무엇입니까?