您现在的位置是:首页 > 技术教程 正文

【Python知识】可视化函数plt.scatter

admin 阅读: 2024-03-22
后台-插件-广告管理-内容页头部广告(手机)

目录

一、说明

二、函数和参数详解

2.1 scatter函数原型

2.2 参数详解

2.3 其中散点的形状参数marker如下:

2.4 其中颜色参数c如下:

三、画图示例

3.1 关于坐标x,y和s,c

3.2 多元高斯的情况

3.3  绘制例子

3.4 绘图例3

3.5  同心绘制

3.6 有标签绘制

3.7 直线划分

3.8 曲线划分


一、说明

       关于matplotlib的scatter函数有许多活动参数,如果不专门注解,是无法掌握精髓的,本文专门针对scatter的参数和调用说起,并配有若干案例。

二、函数和参数详解

2.1 scatter函数原型

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

2.2 参数详解

属性参数意义
坐标x,y输入点列的数组,长度都是size
点大小s点的直径数组,默认直径20,长度最大size
点颜色c点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。
点形状marker点的样式,默认小圆圈 'o'。
调色板cmap

Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组时才使用。如果没有申明就是 image.cmap。

亮度(1)normNormalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。
亮度(2)vmin,vmax亮度设置,在 norm 参数存在时会忽略。
透明度alpha透明度设置,0-1 之间,默认 None,即不透明
线linewidths 标记点的长度
颜色

edgecolors

颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None。

plotnonfinite

布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。

**kwargs 

其他参数。

2.3 其中散点的形状参数marker如下:

2.4 其中颜色参数c如下:

三、画图示例

3.1 关于坐标x,y和s,c

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. # Fixing random state for reproducibility
  4. np.random.seed(19680801)
  5. N = 50
  6. x = np.random.rand(N)
  7. y = np.random.rand(N)
  8. colors = np.random.rand(N) # 颜色可以随机
  9. area = (30 * np.random.rand(N))**2 # 点的宽度30,半径15
  10. plt.scatter(x, y, s=area, c=colors, alpha=0.5)
  11. plt.show()

        注意:以上核心语句是:

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

        其中:x,y,s,c维度一样就能成。

3.2 多元高斯的情况

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. fig=plt.figure(figsize=(8,6))
  4. #Generating a Gaussion dataset:
  5. #creating random vectors from the multivariate normal distribution
  6. #given mean and covariance
  7. mu_vec1=np.array([0,0])
  8. cov_mat1=np.array([[1,0],[0,1]])
  9. X=np.random.multivariate_normal(mu_vec1,cov_mat1,500)
  10. R=X**2
  11. R_sum=R.sum(axis=1)
  12. plt.scatter(X[:,0],X[:,1],color='green',marker='o', =32.*R_sum,edgecolor='black',alpha=0.5)
  13. plt.show()

%20 3.3 %20绘制例子%20
  1. from%20matplotlib%20import%20pyplot%20as%20plt
  2. import%20numpy%20as%20np
  3. #%20Generating%20a%20Gaussion%20dTset:
  4. #Creating%20random%20vectors%20from%20the%20multivaritate%20normal%20distribution
  5. #givem%20mean%20and%20covariance
  6. %20
  7. mu_vecl%20=%20np.array([0,%200])
  8. cov_matl%20=%20np.array([[2,0],[0,2]])
  9. %20
  10. x1_samples%20=%20np.random.multivariate_normal(mu_vecl,%20cov_matl,100)
  11. x2_samples%20=%20np.random.multivariate_normal(mu_vecl+0.2,%20cov_matl%20+0.2,%20100)
  12. x3_samples%20=%20np.random.multivariate_normal(mu_vecl+0.4,%20cov_matl%20+0.4,%20100)
  13. %20
  14. plt.figure(figsize%20=%20(8,%206))
  15. %20
  16. plt.scatter(x1_samples[:,0],%20x1_samples[:,%201],%20marker='x',
  17. %20%20%20%20%20%20%20%20%20%20%20color%20=%20'blue',%20alpha=0.7,%20label%20=%20'x1%20samples')
  18. plt.scatter(x2_samples[:,0],%20x1_samples[:,1],%20marker='o',
  19. %20%20%20%20%20%20%20%20%20%20%20color%20='green',%20alpha=0.7,%20label%20=%20'x2%20samples')
  20. plt.scatter(x3_samples[:,0],%20x1_samples[:,1],%20marker='^',
  21. %20%20%20%20%20%20%20%20%20%20%20color%20='red',%20alpha=0.7,%20label%20=%20'x3%20samples')
  22. plt.title('Basic%20scatter%20plot')
  23. plt.ylabel('variable%20X')
  24. plt.xlabel('Variable%20Y')
  25. plt.legend(loc%20=%20'upper%20right')
  26. %20
  27. plt.show()
  28. %20
  29. %20
  30. %20%20%20%20import%20matplotlib.pyplot%20as%20plt
  31. %20%20%20%20
  32. %20%20%20%20fig,ax%20=%20plt.subplots()
  33. %20%20%20%20
  34. %20%20%20%20ax.plot([0],[0],%20marker="o",%20%20markersize=10)
  35. %20%20%20%20ax.plot([0.07,0.93],[0,0],%20%20%20%20linewidth=10)
  36. %20%20%20%20ax.scatter([1],[0],%20%20%20%20%20%20%20%20%20%20%20s=100)
  37. %20%20%20%20
  38. %20%20%20%20ax.plot([0],[1],%20marker="o",%20%20markersize=22)
  39. %20%20%20%20ax.plot([0.14,0.86],[1,1],%20%20%20%20linewidth=22)
  40. %20%20%20%20ax.scatter([1],[1],%20%20%20%20%20%20%20%20%20%20%20s=22**2)
  41. %20%20%20%20
  42. %20%20%20%20plt.show()
  43. %20
  44. %20
  45. %20
  46. ![image.png](http://upload-images.jianshu.io/upload_images/8730384-8d27a5015b37ee97.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  47. import matplotlib.pyplot as plt
  48. for dpi in [72,100,144]:
  49. fig,ax = plt.subplots(figsize=(1.5,2), dpi=dpi)
  50. ax.set_title("fig.dpi={}".format(dpi))
  51. ax.set_ylim(-3,3)
  52. ax.set_xlim(-2,2)
  53. ax.scatter([0],[1], s=10**2,
  54. marker="s", linewidth=0, label="100 points^2")
  55. ax.scatter([1],[1], s=(10*72./fig.dpi)**2,
  56. marker="s", linewidth=0, label="100 pixels^2")
  57. ax.legend(loc=8,framealpha=1, fontsize=8)
  58. fig.savefig("fig{}.png".format(dpi), bbox_inches="tight")
  59. plt.show()

%20 3.4%20绘图例3%20
  1. import%20matplotlib.pyplot%20as%20plt
  2. %20
  3. for%20dpi%20in%20[72,100,144]:
  4. %20
  5. %20%20%20%20fig,ax%20=%20plt.subplots(figsize=(1.5,2),%20dpi=dpi)
  6. %20%20%20%20ax.set_title("fig.dpi={}".format(dpi))
  7. %20
  8. %20%20%20%20ax.set_ylim(-3,3)
  9. %20%20%20%20ax.set_xlim(-2,2)
  10. %20
  11. %20%20%20%20ax.scatter([0],[1],%20s=10**2,%20
  12. %20%20%20%20%20%20%20%20%20%20%20%20%20%20%20marker="s",%20linewidth=0,%20label="100%20points^2")
  13. %20%20%20%20ax.scatter([1],[1],%20s=(10*72./fig.dpi)**2,%20
  14. %20%20%20%20%20%20%20%20%20%20%20%20%20%20%20marker="s",%20linewidth=0,%20label="100%20pixels^2")
  15. %20
  16. %20%20%20%20ax.legend(loc=8,framealpha=1,%20fontsize=8)
  17. %20
  18. %20%20%20%20fig.savefig("fig{}.png".format(dpi), bbox_inches="tight")
  19. plt.show()

%20 3.5 %20同心绘制%20
  1. plt.scatter(2,%201,%20s=4000,%20c='r')
  2. plt.scatter(2,%201,%20s=1000%20,c='b')
  3. plt.scatter(2,%201,%20s=10,%20c='g')
%20

%20 3.6%20有标签绘制%20
  1. import%20matplotlib.pyplot%20as%20plt
  2. %20
  3. x_coords%20=%20[0.13,%200.22,%200.39,%200.59,%200.68,%200.74,0.93]
  4. y_coords%20=%20[0.75,%200.34,%200.44,%200.52,%200.80,%200.25,0.55]
  5. %20
  6. fig%20=%20plt.figure(figsize%20=%20(8,5))
  7. %20
  8. plt.scatter(x_coords,%20y_coords,%20marker%20=%20's',%20s%20=%2050)
  9. for%20x,%20y%20in%20zip(x_coords,%20y_coords):
  10. %20%20%20%20plt.annotate('(%s,%s)'%(x,y),%20xy=(x,y),xytext%20=%20(0,%20-10),%20textcoords%20=%20'offset%20points',ha%20=%20'center',%20va%20=%20'top')
  11. plt.xlim([0,1])
  12. plt.ylim([0,1])
  13. plt.show()
%20

%20

%20 3.7%20直线划分%20
  1. #%202-category%20classfication%20with%20random%202D-sample%20data
  2. #%20from%20a%20multivariate%20normal%20distribution
  3. %20
  4. import%20numpy%20as%20np
  5. from%20matplotlib%20import%20pyplot%20as%20plt
  6. %20
  7. def%20decision_boundary(x_1):
  8. %20%20%20%20"""Calculates%20the%20x_2%20value%20for%20plotting%20the%20decision%20boundary."""
  9. #%20%20%20%20return%204%20-%20np.sqrt(-x_1**2%20+%204*x_1%20+%206%20+%20np.log(16))
  10. %20%20%20%20return%20-x_1%20+%201
  11. %20
  12. #%20Generating%20a%20gaussion%20dataset:
  13. #%20creating%20random%20vectors%20from%20the%20multivariate%20normal%20distribution
  14. #%20given%20mean%20and%20covariance
  15. %20
  16. mu_vec1%20=%20np.array([0,0])
  17. cov_mat1%20=%20np.array([[2,0],[0,2]])
  18. x1_samples%20=%20np.random.multivariate_normal(mu_vec1,%20cov_mat1,100)
  19. mu_vec1%20=%20mu_vec1.reshape(1,2).T%20#%20TO%201-COL%20VECTOR
  20. %20
  21. mu_vec2%20=%20np.array([1,2])
  22. cov_mat2%20=%20np.array([[1,0],[0,1]])
  23. x2_samples%20=%20np.random.multivariate_normal(mu_vec2,%20cov_mat2,%20100)
  24. mu_vec2%20=%20mu_vec2.reshape(1,2).T%20#%20to%202-col%20vector
  25. %20
  26. #%20Main%20scatter%20plot%20and%20plot%20annotation
  27. %20
  28. f,%20ax%20=%20plt.subplots(figsize%20=%20(7,%207))
  29. ax.scatter(x1_samples[:,%200],%20x1_samples[:,1],%20marker%20=%20'o',color%20=%20'green',%20s=40)
  30. ax.scatter(x2_samples[:,%200],%20x2_samples[:,1],%20marker%20=%20'^',color%20=%20'blue',%20s%20=40)
  31. plt.legend(['Class1%20(w1)',%20'Class2%20(w2)'],%20loc%20=%20'upper%20right')
  32. plt.title('Densities%20of%202%20classes%20with%2025%20bivariate%20random%20patterns%20each')
  33. plt.ylabel('x2')
  34. plt.xlabel('x1')
  35. ftext%20=%20'p(x|w1)%20-N(mu1=(0,0)^t,%20cov1%20=%20I)\np.(x|w2)%20-N(mu2%20=%20(1,%201)^t),%20cov2%20=I'
  36. plt.figtext(.15,.8,%20ftext,%20fontsize%20=%2011,%20ha%20='left')
  37. %20
  38. #Adding%20decision%20boundary%20to%20plot
  39. %20
  40. x_1%20=%20np.arange(-5,%205,%200.1)
  41. bound%20=%20decision_boundary(x_1)
  42. plt.plot(x_1,%20bound,%20'r--',%20lw%20=%203)
  43. %20
  44. x_vec%20=%20np.linspace(*ax.get_xlim())
  45. x_1%20=%20np.arange(0,%20100,%200.05)
  46. %20
  47. plt.show()
%20

%20

%20 3.8%20曲线划分%20
  1. #%202-category%20classfication%20with%20random%202D-sample%20data
  2. #%20from%20a%20multivariate%20normal%20distribution
  3. %20
  4. import%20numpy%20as%20np
  5. from%20matplotlib%20import%20pyplot%20as%20plt
  6. %20
  7. def%20decision_boundary(x_1):
  8. %20%20%20%20"""Calculates%20the%20x_2%20value%20for%20plotting%20the%20decision%20boundary."""
  9. %20%20%20%20return%204%20-%20np.sqrt(-x_1**2%20+%204*x_1%20+%206%20+%20np.log(16))
  10. %20
  11. #%20Generating%20a%20gaussion%20dataset:
  12. #%20creating%20random%20vectors%20from%20the%20multivariate%20normal%20distribution
  13. #%20given%20mean%20and%20covariance
  14. %20
  15. mu_vec1%20=%20np.array([0,0])
  16. cov_mat1%20=%20np.array([[2,0],[0,2]])
  17. x1_samples%20=%20np.random.multivariate_normal(mu_vec1,%20cov_mat1,100)
  18. mu_vec1%20=%20mu_vec1.reshape(1,2).T%20#%20TO%201-COL%20VECTOR
  19. %20
  20. mu_vec2%20=%20np.array([1,2])
  21. cov_mat2%20=%20np.array([[1,0],[0,1]])
  22. x2_samples%20=%20np.random.multivariate_normal(mu_vec2,%20cov_mat2,%20100)
  23. mu_vec2%20=%20mu_vec2.reshape(1,2).T%20#%20to%202-col%20vector
  24. %20
  25. #%20Main%20scatter%20plot%20and%20plot%20annotation
  26. %20
  27. f,%20ax%20=%20plt.subplots(figsize%20=%20(7,%207))
  28. ax.scatter(x1_samples[:,%200],%20x1_samples[:,1],%20marker%20=%20'o',color%20=%20'green',%20s=40)
  29. ax.scatter(x2_samples[:,%200],%20x2_samples[:,1],%20marker%20=%20'^',color%20=%20'blue',%20s%20=40)
  30. plt.legend(['Class1%20(w1)',%20'Class2%20(w2)'],%20loc%20=%20'upper%20right')
  31. plt.title('Densities%20of%202%20classes%20with%2025%20bivariate%20random%20patterns%20each')
  32. plt.ylabel('x2')
  33. plt.xlabel('x1')
  34. ftext%20=%20'p(x|w1)%20-N(mu1=(0,0)^t,%20cov1%20=%20I)\np.(x|w2)%20-N(mu2%20=%20(1,%201)^t),%20cov2%20=I'
  35. plt.figtext(.15,.8,%20ftext,%20fontsize%20=%2011,%20ha%20='left')
  36. %20
  37. #Adding%20decision%20boundary%20to%20plot
  38. %20
  39. x_1%20=%20np.arange(-5,%205,%200.1)
  40. bound%20=%20decision_boundary(x_1)
  41. plt.plot(x_1,%20bound,%20'r--',%20lw%20=%203)
  42. %20
  43. x_vec%20=%20np.linspace(*ax.get_xlim())
  44. x_1%20=%20np.arange(0,%20100,%200.05)
  45. %20
  46. plt.show()
%20

%20

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜