我们可以使用 pyplot 中的 scatter() 方法来绘制散点图。
scatter() 方法语法格式如下:
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
参数说明:
以下实例 scatter() 函数接收长度相同的数组参数,一个用于 x 轴的值,另一个用于 y 轴上的值:
# 实例 1
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
plt.scatter(x, y)
plt.show()
设置图标大小
# 实例 2
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
sizes = np.array([20,50,100,200,500,1000,60,90])
plt.scatter(x, y, s=sizes)
plt.show()
自定义点的颜色
# 实例 3
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"])
plt.scatter(x, y, c=colors)
plt.show()
设置两组散点图
# 实例 4
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y, color = 'hotpink')
x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y, color = '#88c999')
plt.show()
使用随机数来设置散点图
# 实例 5
import numpy as np
import matplotlib.pyplot as plt
# 随机数生成器的种子
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 # 0 to 15 point radii
plt.scatter(x, y, s=area, c=colors, alpha=0.5) # 设置颜色及透明度
plt.title("RUNOOB Scatter Test") # 设置标题
plt.show()
Matplotlib 模块提供了很多可用的颜色条。
颜色条就像一个颜色列表,其中每种颜色都有一个范围从 0 到 100 的值。
下面是一个颜色条的例子:
设置颜色条需要使用 cmap 参数,默认值为 ‘viridis’,之后颜色值设置为 0 到 100 的数组。
# 实例 6
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
plt.scatter(x, y, c=colors, cmap='viridis')
plt.show()
如果要显示颜色条,需要使用 plt.colorbar() 方法:
# 实例 7
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
plt.scatter(x, y, c=colors, cmap='viridis')
plt.colorbar()
plt.show()
换个颜色条参数, cmap 设置为 afmhot_r:
# 实例 8
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
plt.scatter(x, y, c=colors, cmap='afmhot_r')
plt.colorbar()
plt.show()
颜色条参数值可以是以下值:
颜色名称 | 保留关键字 |
---|---|
Accent | Accent_r |
Blues | Blues_r |
BrBG | BrBG_r |
BuGn | BuGn_r |
BuPu | BuPu_r |
CMRmap | CMRmap_r |
Dark2 | Dark2_r |
GnBu | GnBu_r |
Greens | Greens_r |
Greys | Greys_r |
OrRd | OrRd_r |
Oranges | Oranges_r |
PRGn | PRGn_r |
Paired | Paired_r |
Pastel1 | Pastel1_r |
Pastel2 | Pastel2_r |
PiYG | PiYG_r |
PuBu | PuBu_r |
PuBuGn | PuBuGn_r |
PuOr | PuOr_r |
PuRd | PuRd_r |
Purples | Purples_r |
RdBu | RdBu_r |
RdGy | RdGy_r |
RdPu | RdPu_r |
RdYlBu | RdYlBu_r |
RdYlGn | RdYlGn_r |
Reds | Reds_r |
Set1 | Set1_r |
Set2 | Set2_r |
Set3 | Set3_r |
Spectral | Spectral_r |
Wistia | Wistia_r |
YlGn | YlGn_r |
YlGnBu | YlGnBu_r |
YlOrBr | YlOrBr_r |
YlOrRd | YlOrRd_r |
afmhot | afmhot_r |
autumn | autumn_r |
binary | binary_r |
bone | bone_r |
brg | brg_r |
bwr | bwr_r |
cividis | cividis_r |
cool | cool_r |
coolwarm | coolwarm_r |
copper | copper_r |
cubehelix | cubehelix_r |
flag | flag_r |
gist_earth | gist_earth_r |
gist_gray | gist_gray_r |
gist_heat | gist_heat_r |
gist_ncar | gist_ncar_r |
gist_rainbow | gist_rainbow_r |
gist_stern | gist_stern_r |
gist_yarg | gist_yarg_r |
gnuplot | gnuplot_r |
gnuplot2 | gnuplot2_r |
gray | gray_r |
hot | hot_r |
hsv | hsv_r |
inferno | inferno_r |
jet | jet_r |
magma | magma_r |
nipy_spectral | nipy_spectral_r |
ocean | ocean_r |
pink | pink_r |
plasma | plasma_r |
prism | prism_r |
rainbow | rainbow_r |
seismic | seismic_r |
spring | spring_r |
summer | summer_r |
tab10 | tab10_r |
tab20 | tab20_r |
tab20b | tab20b_r |
tab20c | tab20c_r |
terrain | terrain_r |
twilight | twilight_r |
twilight_shifted | twilight_shifted_r |
viridis | viridis_r |
winter | winter_r |
今天学习的是Python Matplotlib 散点图学会了吗。 今天学习内容总结一下: