matplotlib
기본 플롯
수색…
산포도
간단한 산점도
import matplotlib.pyplot as plt
# Data
x = [43,76,34,63,56,82,87,55,64,87,95,23,14,65,67,25,23,85]
y = [34,45,34,23,43,76,26,18,24,74,23,56,23,23,34,56,32,23]
fig, ax = plt.subplots(1, figsize=(10, 6))
fig.suptitle('Example Of Scatterplot')
# Create the Scatter Plot
ax.scatter(x, y,
color="blue", # Color of the dots
s=100, # Size of the dots
alpha=0.5, # Alpha/transparency of the dots (1 is opaque, 0 is transparent)
linewidths=1) # Size of edge around the dots
# Show the plot
plt.show()
레이블이있는 점이있는 산점도
import matplotlib.pyplot as plt
# Data
x = [21, 34, 44, 23]
y = [435, 334, 656, 1999]
labels = ["alice", "bob", "charlie", "diane"]
# Create the figure and axes objects
fig, ax = plt.subplots(1, figsize=(10, 6))
fig.suptitle('Example Of Labelled Scatterpoints')
# Plot the scatter points
ax.scatter(x, y,
color="blue", # Color of the dots
s=100, # Size of the dots
alpha=0.5, # Alpha of the dots
linewidths=1) # Size of edge around the dots
# Add the participant names as text labels for each point
for x_pos, y_pos, label in zip(x, y, labels):
ax.annotate(label, # The label for this point
xy=(x_pos, y_pos), # Position of the corresponding point
xytext=(7, 0), # Offset text by 7 points to the right
textcoords='offset points', # tell it to use offset points
ha='left', # Horizontally aligned to the left
va='center') # Vertical alignment is centered
# Show the plot
plt.show()
음영 처리 된 플롯
줄 아래 음영 처리 된 영역
import matplotlib.pyplot as plt
# Data
x = [0,1,2,3,4,5,6,7,8,9]
y1 = [10,20,40,55,58,55,50,40,20,10]
# Shade the area between y1 and line y=0
plt.fill_between(x, y1, 0,
facecolor="orange", # The fill color
color='blue', # The outline color
alpha=0.2) # Transparency of the fill
# Show the plot
plt.show()
음영 처리 된 두 선 사이의 영역
import matplotlib.pyplot as plt
# Data
x = [0,1,2,3,4,5,6,7,8,9]
y1 = [10,20,40,55,58,55,50,40,20,10]
y2 = [20,30,50,77,82,77,75,68,65,60]
# Shade the area between y1 and y2
plt.fill_between(x, y1, y2,
facecolor="orange", # The fill color
color='blue', # The outline color
alpha=0.2) # Transparency of the fill
# Show the plot
plt.show()
선 그래프
단순 선 그림
import matplotlib.pyplot as plt
# Data
x = [14,23,23,25,34,43,55,56,63,64,65,67,76,82,85,87,87,95]
y = [34,45,34,23,43,76,26,18,24,74,23,56,23,23,34,56,32,23]
# Create the plot
plt.plot(x, y, 'r-')
# r- is a style code meaning red solid line
# Show the plot
plt.show()
일반적으로 해당 주 y
의 함수가 아니다 x
또한있는 숫자 것을 x
정렬 될 필요가 없다. 정렬되지 않은 x 값을 갖는 선 그림은 다음과 같습니다.
# shuffle the elements in x
np.random.shuffle(x)
plt.plot(x, y, 'r-')
plt.show()
데이터 플롯
이는 산점도 와 유사하지만 대신 plot()
함수를 사용합니다. 여기에서 코드의 유일한 차이점은 스타일 인수입니다.
plt.plot(x, y, 'b^')
# Create blue up-facing triangles
데이터 및 라인
스타일 인수는 마커와 선 스타일 모두에 대해 기호를 사용할 수 있습니다.
plt.plot(x, y, 'go--')
# green circles and dashed line
히트 맵
히트 맵은 두 변수의 스칼라 함수를 시각화하는 데 유용합니다. 그들은 2 차원 히스토그램의 "평평한"이미지를 제공합니다 (예를 들어 특정 영역의 밀도를 나타냄).
다음의 소스 코드는 양방향으로 0에 중심을 둔 2 변수 정규 분포 수 ( [0.0, 0.0]
의미)와 주어진 공분산 행렬을 사용하여 히트 맵을 보여줍니다. 데이터는 numpy 함수 numpy.random.multivariate_normal을 사용하여 생성됩니다. 그것은 pyplot matplotlib.pyplot.hist2d 의 hist2d
함수로 보내집니다.
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
# Define numbers of generated data points and bins per axis.
N_numbers = 100000
N_bins = 100
# set random seed
np.random.seed(0)
# Generate 2D normally distributed numbers.
x, y = np.random.multivariate_normal(
mean=[0.0, 0.0], # mean
cov=[[1.0, 0.4],
[0.4, 0.25]], # covariance matrix
size=N_numbers
).T # transpose to get columns
# Construct 2D histogram from data using the 'plasma' colormap
plt.hist2d(x, y, bins=N_bins, normed=False, cmap='plasma')
# Plot a colorbar with label.
cb = plt.colorbar()
cb.set_label('Number of entries')
# Add title and labels to plot.
plt.title('Heatmap of 2D normally distributed data points')
plt.xlabel('x axis')
plt.ylabel('y axis')
# Show the plot.
plt.show()
여기에 3D 히스토그램으로 시각화 된 동일한 데이터가 있습니다 (효율성을 위해 20 개의 빈을 사용합니다). 코드는 이 matplotlib 데모를 기반으로 합니다 .
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
# Define numbers of generated data points and bins per axis.
N_numbers = 100000
N_bins = 20
# set random seed
np.random.seed(0)
# Generate 2D normally distributed numbers.
x, y = np.random.multivariate_normal(
mean=[0.0, 0.0], # mean
cov=[[1.0, 0.4],
[0.4, 0.25]], # covariance matrix
size=N_numbers
).T # transpose to get columns
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
hist, xedges, yedges = np.histogram2d(x, y, bins=N_bins)
# Add title and labels to plot.
plt.title('3D histogram of 2D normally distributed data points')
plt.xlabel('x axis')
plt.ylabel('y axis')
# Construct arrays for the anchor positions of the bars.
# Note: np.meshgrid gives arrays in (ny, nx) so we use 'F' to flatten xpos,
# ypos in column-major order. For numpy >= 1.7, we could instead call meshgrid
# with indexing='ij'.
xpos, ypos = np.meshgrid(xedges[:-1] + 0.25, yedges[:-1] + 0.25)
xpos = xpos.flatten('F')
ypos = ypos.flatten('F')
zpos = np.zeros_like(xpos)
# Construct arrays with the dimensions for the 16 bars.
dx = 0.5 * np.ones_like(zpos)
dy = dx.copy()
dz = hist.flatten()
ax.bar3d(xpos, ypos, zpos, dx, dy, dz, color='b', zsort='average')
# Show the plot.
plt.show()
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow