python - Matplotlib에 의한 2 차원 히스토그램을 배열로 내보내기

2 차원 히스토그램을 파이썬으로 그리는 방법은 Matplotlib과 OpenCV를 사용하는 것이 유명합니다.

이 기사에서는 Matplotlib에서 2D 히스토그램을 만들 때 히스토그램을 2D 배열로 텍스트 파일로 내보내는 방법을 기록해 둡니다.

[Python] Matplotlib에서 2 차원 히스토그램



Matplotlib를 사용하여 2차원 히스토그램 이미지를 만드는 방법은 @ 수퍼 사이 아쿠 진 님의 기사를 추천합니다.

[Python] Matplotlib에서 2D 히스토그램을 만드는 방법

개요는 Matplotlib 라이브러리의 hist2d 함수에 원래 데이터가되는 2 개의 numpy 배열을 전달하여 2 차원 히스토그램을 작성합니다.

원 데이터가 되는 2개의 numpy 배열은 각각, 「x 좌표만의 배열」, 「y 좌표만의 배열」을 작성할 필요가 있는 것은 주의가 필요합니다.


이러한 2차원 히스토그램은 다음 샘플 프로그램으로 작성할 수 있습니다.

hist2d
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

#元データ
x = (1.1,1.1,3.2,3.1,1.1,2.1,1.1)
y = (-1.1,-2.1,-2.1,-2.1,-3.1,-2.1,-2.1)

#グラフ描画のための前準備
fig = plt.figure()
ax = fig.add_subplot(111)

#ヒストグラム作成 hist2d(配列,配列, 描画範囲指定(下限、上限、分割数), カラーバーの色合い指定)
H = ax.hist2d(x,y, bins=[np.linspace(-5,5,10),np.linspace(-5,5,10)], cmap=cm.jet)
ax.set_title('1st graph')
ax.set_xlabel('x')
ax.set_ylabel('y')
fig.colorbar(H[3],ax=ax)
plt.show()

2차원 히스토그램 값을 배열로 내보내기



2차원 히스토그램의 값을 배열로 텍스트 파일이나 csv에 내보내려면 numpy의 save 함수가 편리합니다.

savetxt
#ヒストグラム作成 hist2d(配列,配列, 描画範囲指定(下限、上限、分割数), カラーバーの色合い指定)
H = ax.hist2d(x,y, bins=[np.linspace(-5,5,10),np.linspace(-5,5,10)], cmap=cm.jet)
np.savetxt("2Dhist-array.txt", H[0], fmt = "%s")

Matplotlib 공식 매뉴얼에서 hist2d 반환값을 확인하면 첫 번째 반환값이 히스토그램 값임을 알 수 있습니다.
따라서 H[0]을 꺼냅니다.

fmt = "%s"는 문자열로 포맷되어 있습니다.


hist2d



H[0]
히스토그램 값(2차원 배열)

H[1]
x축의 분할값(1차원 배열)

H[2]
y축의 분할값(1차원 배열)

H[3]
컬러바 정보(QuadMesh)


Matplotlib.pyplot.hist2d
#ヒストグラム作成 hist2d(配列,配列, 描画範囲指定(下限、上限、分割数), カラーバーの色合い指定)
H = ax.hist2d(x,y, bins=[np.linspace(-5,5,10),np.linspace(-5,5,10)], cmap=cm.jet)
print(H[0])
>>>[[0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 1. 2. 1. 0. 0. 0. 0. 0.]
 [0. 0. 1. 0. 0. 0. 0. 0. 0.]
 [0. 0. 2. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0.]]

출력되는 배열을 보는 한, y축을 따라 1차원 배열이 생성됩니다.

이번 코드를 정리했습니다.
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

#元データ
x = (1.1,1.1,3.2,3.1,1.1,2.1,1.1)
y = (-1.1,-2.1,-2.1,-2.1,-3.1,-2.1,-2.1)

#グラフ描画のための前準備
fig = plt.figure()
ax = fig.add_subplot(111)

#ヒストグラム作成 hist2d(配列,配列, 描画範囲指定, カラーバーの色合い指定)
H = ax.hist2d(x,y, bins=[np.linspace(-5,5,10),np.linspace(-5,5,10)], cmap=cm.jet)
ax.set_title('1st graph')
ax.set_xlabel('x')
ax.set_ylabel('y')
fig.colorbar(H[3],ax=ax)
plt.show()

#2Dヒストグラムのテキストファイルへの書き出し
np.savetxt("2Dhist-array.txt", H[0], fmt = "%s")

좋은 웹페이지 즐겨찾기