您的位置:首页 > 编程语言 > Python开发

Python 中用 matplotlib 画散列点 (Scatter)

2017-05-12 17:42 465 查看
http://blog.topspeedsnail.com/archives/830


基本散列点绘制

1234567891011121314151617181920212223242526272829from matplotlib import pyplot as pltimport numpy as np # Generating a Gaussion dataset:# creating random vectors from the multivariate normal distribution# given mean and covariancemu_vec1 = np.array([0,0])cov_mat1 = np.array([[2,0],[0,2]]) x1_samples = np.random.multivariate_normal(mu_vec1, cov_mat1, 100)x2_samples = np.random.multivariate_normal(mu_vec1+0.2, cov_mat1+0.2, 100)x3_samples = np.random.multivariate_normal(mu_vec1+0.4, cov_mat1+0.4, 100) # x1_samples.shape -> (100, 2), 100 rows, 2 columns 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()


带标签

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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()





用曲线把样本分成两类

12345678910111213141516171819202122232425262728293031323334353637383940414243# 2-category classification with random 2D-sample data# from a multivariate normal distribution import numpy as npfrom 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 covariancemu_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 1-col vector # Main scatter plot and plot annotationf, ax = plt.subplots(figsize=(7, 7))ax.scatter(x1_samples[:,0], x1_samples[:,1], marker='o', color='green', s=40, alpha=0.5)ax.scatter(x2_samples[:,0], x2_samples[:,1], marker='^', color='blue', s=40, alpha=0.5)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 plotx_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()


按到原点的距离增大点的大小

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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='gray',

marker='o',

s=32.
*
R_sum,

edgecolor='black',

alpha=0.5)

plt.show()



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: