[Python knowledge] visualization function plt.scatter

Table of contents

1. Description

2. Function and parameter details

2.1 scatter function prototype

2.2 Detailed explanation of parameters

2.3 The shape parameter marker of the scatter point is as follows:

2.4 The color parameter c is as follows:

3. Drawing example

3.1 About the coordinates x, y and s, c

3.2 The case of multivariate Gaussian

3.3 Drawing example

3.4 Drawing example 3

3.5 Concentric drawing

3.6 Labeled drawing

3.7 Straight line division

3.8 Curve division


1. Description

       The scatter function of matplotlib has many active parameters. If there is no special annotation, it is impossible to grasp the essence. This article specifically focuses on the parameters and calls of scatter, and is equipped with several cases.

2. Function and parameter details

2.1 scatter function prototype

matplotlib.pyplot.scatter(xys=Nonec=Nonemarker=Nonecmap=Nonenorm=Nonevmin=Nonevmax=Nonealpha=Nonelinewidths=None*edgecolors=Noneplotnonfinite=Falsedata=None**kwargs)

2.2 Detailed explanation of parameters

Attributes parameter significance
coordinate x,y The array of input point columns, the length is size
point size s The diameter array of points, the default diameter is 20, and the maximum length is size
dot color c The color of the point, the default blue 'b', can also be a RGB or RGBA two-dimensional row array.
point shape marker Point style, default small circle 'o'.
palette cmap

Colormap, default None, scalar or a colormap name, only used when c is an array of floats. If there is no declaration, it is image.cmap.

Brightness (1) norm Normalize, the default is None, the data brightness is between 0-1, it is only used when c is an array of floating point numbers.
Brightness (2) vmin,vmax Brightness setting, ignored when the norm parameter exists.
transparency alpha Transparency setting, between 0-1, the default is None, that is, opaque
Wire linewidths  length of marker
color

edgecolors

Color or color sequence, default is 'face', optional values ​​are 'face', 'none', None.

plotnonfinite

Boolean setting whether to plot points with unqualified c (inf, -inf or nan).

**quargs 

Other parameters.

2.3 The shape parameter marker of the scatter point is as follows:

2.4 The color parameter c is as follows:

3. Drawing example

3.1 About the coordinates x, y and s, c

import numpy as np
import matplotlib.pyplot as plt

# Fixing random state for reproducibility
np.random.seed(19680801)


N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)          # 颜色可以随机
area = (30 * np.random.rand(N))**2  # 点的宽度30,半径15

plt.scatter(x, y, s=area, c=colors, alpha=0.5)  
plt.show()

        Note: The above core statement is:

plt.scatter(x, y, s=area, c=colors, alpha=0.5, marker=",")

        Among them: x, y, s, c dimensions can be the same.

3.2 The case of multivariate Gaussian

​
import numpy as np
import matplotlib.pyplot as plt


fig=plt.figure(figsize=(8,6))
#Generating a Gaussion dataset:
#creating random vectors from the multivariate normal distribution
#given mean and covariance
mu_vec1=np.array([0,0])
cov_mat1=np.array([[1,0],[0,1]])
X=np.random.multivariate_normal(mu_vec1,cov_mat1,500)
R=X**2
R_sum=R.sum(axis=1)
plt.scatter(X[:,0],X[:,1],color='green',marker='o', =32.*R_sum,edgecolor='black',alpha=0.5)

plt.show()

​

3.3 Drawing example

from matplotlib import pyplot as plt
import numpy as np
# Generating a Gaussion dTset:
#Creating random vectors from the multivaritate normal distribution
#givem mean and covariance

mu_vecl = np.array([0, 0])
cov_matl = np.array([[2,0],[0,2]])

x1_samples = np.random.multivariate_normal(mu_vecl, cov_matl,100)
x2_samples = np.random.multivariate_normal(mu_vecl+0.2, cov_matl +0.2, 100)
x3_samples = np.random.multivariate_normal(mu_vecl+0.4, cov_matl +0.4, 100)

plt.figure(figsize = (8, 6))

plt.scatter(x1_samples[:,0], x1_samples[:, 1], marker='x',
           color = 'blue', alpha=0.7, label = 'x1 samples')
plt.scatter(x2_samples[:,0], x1_samples[:,1], marker='o',
           color ='green', alpha=0.7, label = 'x2 samples')
plt.scatter(x3_samples[:,0], x1_samples[:,1], marker='^',
           color ='red', alpha=0.7, label = 'x3 samples')
plt.title('Basic scatter plot')
plt.ylabel('variable X')
plt.xlabel('Variable Y')
plt.legend(loc = 'upper right')

plt.show()


    import matplotlib.pyplot as plt
    
    fig,ax = plt.subplots()
    
    ax.plot([0],[0], marker="o",  markersize=10)
    ax.plot([0.07,0.93],[0,0],    linewidth=10)
    ax.scatter([1],[0],           s=100)
    
    ax.plot([0],[1], marker="o",  markersize=22)
    ax.plot([0.14,0.86],[1,1],    linewidth=22)
    ax.scatter([1],[1],           s=22**2)
    
    plt.show()



![image.png](http://upload-images.jianshu.io/upload_images/8730384-8d27a5015b37ee97.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    import matplotlib.pyplot as plt
    
    for dpi in [72,100,144]:
    
        fig,ax = plt.subplots(figsize=(1.5,2), dpi=dpi)
        ax.set_title("fig.dpi={}".format(dpi))
    
        ax.set_ylim(-3,3)
        ax.set_xlim(-2,2)
    
        ax.scatter([0],[1], s=10**2, 
                   marker="s", linewidth=0, label="100 points^2")
        ax.scatter([1],[1], s=(10*72./fig.dpi)**2, 
                   marker="s", linewidth=0, label="100 pixels^2")
    
        ax.legend(loc=8,framealpha=1, fontsize=8)
    
        fig.savefig("fig{}.png".format(dpi), bbox_inches="tight")
    
    plt.show() 

3.4 Drawing example 3

import matplotlib.pyplot as plt

for dpi in [72,100,144]:

    fig,ax = plt.subplots(figsize=(1.5,2), dpi=dpi)
    ax.set_title("fig.dpi={}".format(dpi))

    ax.set_ylim(-3,3)
    ax.set_xlim(-2,2)

    ax.scatter([0],[1], s=10**2, 
               marker="s", linewidth=0, label="100 points^2")
    ax.scatter([1],[1], s=(10*72./fig.dpi)**2, 
               marker="s", linewidth=0, label="100 pixels^2")

    ax.legend(loc=8,framealpha=1, fontsize=8)

    fig.savefig("fig{}.png".format(dpi), bbox_inches="tight")

plt.show() 

3.5 Concentric drawing

plt.scatter(2, 1, s=4000, c='r')
plt.scatter(2, 1, s=1000 ,c='b')
plt.scatter(2, 1, s=10, c='g')

3.6 Labeled drawing

import matplotlib.pyplot as plt

x_coords = [0.13, 0.22, 0.39, 0.59, 0.68, 0.74,0.93]
y_coords = [0.75, 0.34, 0.44, 0.52, 0.80, 0.25,0.55]

fig = plt.figure(figsize = (8,5))

plt.scatter(x_coords, y_coords, marker = 's', s = 50)
for x, y in zip(x_coords, y_coords):
    plt.annotate('(%s,%s)'%(x,y), xy=(x,y),xytext = (0, -10), textcoords = 'offset points',ha = 'center', va = 'top')
plt.xlim([0,1])
plt.ylim([0,1])
plt.show()

3.7 Straight line division

# 2-category classfication with random 2D-sample data
# from a multivariate normal distribution

import numpy as np
from matplotlib import pyplot as plt

def decision_boundary(x_1):
    """Calculates the x_2 value for plotting the decision boundary."""
#    return 4 - np.sqrt(-x_1**2 + 4*x_1 + 6 + np.log(16))
    return -x_1 + 1

# Generating a gaussion dataset:
# creating random vectors from the multivariate normal distribution
# given mean and covariance

mu_vec1 = np.array([0,0])
cov_mat1 = np.array([[2,0],[0,2]])
x1_samples = np.random.multivariate_normal(mu_vec1, cov_mat1,100)
mu_vec1 = mu_vec1.reshape(1,2).T # TO 1-COL VECTOR

mu_vec2 = np.array([1,2])
cov_mat2 = np.array([[1,0],[0,1]])
x2_samples = np.random.multivariate_normal(mu_vec2, cov_mat2, 100)
mu_vec2 = mu_vec2.reshape(1,2).T # to 2-col vector

# Main scatter plot and plot annotation

f, ax = plt.subplots(figsize = (7, 7))
ax.scatter(x1_samples[:, 0], x1_samples[:,1], marker = 'o',color = 'green', s=40)
ax.scatter(x2_samples[:, 0], x2_samples[:,1], marker = '^',color = 'blue', s =40)
plt.legend(['Class1 (w1)', 'Class2 (w2)'], loc = 'upper right')
plt.title('Densities of 2 classes with 25 bivariate random patterns each')
plt.ylabel('x2')
plt.xlabel('x1')
ftext = 'p(x|w1) -N(mu1=(0,0)^t, cov1 = I)\np.(x|w2) -N(mu2 = (1, 1)^t), cov2 =I'
plt.figtext(.15,.8, ftext, fontsize = 11, ha ='left')

#Adding decision boundary to plot

x_1 = np.arange(-5, 5, 0.1)
bound = decision_boundary(x_1)
plt.plot(x_1, bound, 'r--', lw = 3)

x_vec = np.linspace(*ax.get_xlim())
x_1 = np.arange(0, 100, 0.05)

plt.show()

3.8 Curve division

# 2-category classfication with random 2D-sample data
# from a multivariate normal distribution

import numpy as np
from matplotlib import pyplot as plt

def decision_boundary(x_1):
    """Calculates the x_2 value for plotting the decision boundary."""
    return 4 - np.sqrt(-x_1**2 + 4*x_1 + 6 + np.log(16))

# Generating a gaussion dataset:
# creating random vectors from the multivariate normal distribution
# given mean and covariance

mu_vec1 = np.array([0,0])
cov_mat1 = np.array([[2,0],[0,2]])
x1_samples = np.random.multivariate_normal(mu_vec1, cov_mat1,100)
mu_vec1 = mu_vec1.reshape(1,2).T # TO 1-COL VECTOR

mu_vec2 = np.array([1,2])
cov_mat2 = np.array([[1,0],[0,1]])
x2_samples = np.random.multivariate_normal(mu_vec2, cov_mat2, 100)
mu_vec2 = mu_vec2.reshape(1,2).T # to 2-col vector

# Main scatter plot and plot annotation

f, ax = plt.subplots(figsize = (7, 7))
ax.scatter(x1_samples[:, 0], x1_samples[:,1], marker = 'o',color = 'green', s=40)
ax.scatter(x2_samples[:, 0], x2_samples[:,1], marker = '^',color = 'blue', s =40)
plt.legend(['Class1 (w1)', 'Class2 (w2)'], loc = 'upper right')
plt.title('Densities of 2 classes with 25 bivariate random patterns each')
plt.ylabel('x2')
plt.xlabel('x1')
ftext = 'p(x|w1) -N(mu1=(0,0)^t, cov1 = I)\np.(x|w2) -N(mu2 = (1, 1)^t), cov2 =I'
plt.figtext(.15,.8, ftext, fontsize = 11, ha ='left')

#Adding decision boundary to plot

x_1 = np.arange(-5, 5, 0.1)
bound = decision_boundary(x_1)
plt.plot(x_1, bound, 'r--', lw = 3)

x_vec = np.linspace(*ax.get_xlim())
x_1 = np.arange(0, 100, 0.05)

plt.show()

Guess you like

Origin blog.csdn.net/gongdiwudu/article/details/129947219