通过 Pyplot,您可以使用scatter()
绘制散点图的函数。
这个scatter()
函数为每个观察值绘制一个点。它需要两个长度相同的数组,一个用于 x 轴的值,一个用于 y 轴的值:
一个简单的散点图:
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)
plt.show()
上例中的观察是 13 辆汽车经过的结果。
X 轴显示汽车的年龄。
Y 轴显示汽车经过时的速度。
观察结果之间是否存在任何关系?
似乎车越新,开得越快,但这可能是巧合,毕竟我们只登记了13辆车。
在上面的例子中,速度和年龄之间似乎存在关系,但是如果我们也绘制另一天的观察结果呢?散点图还能告诉我们其他信息吗?
在同一个图上绘制两个图:
import matplotlib.pyplot as plt
import numpy as np
#day one, the age and speed of 13 cars:
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)
#day two, the age and speed of 15 cars:
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)
plt.show()
笔记:这两个图用两种不同的颜色绘制,默认为蓝色和橙色,您将在本章后面学习如何更改颜色。
通过比较这两个图,我认为可以肯定地说它们都给了我们相同的结论:汽车越新,开得越快。
您可以使用以下命令为每个散点图设置自己的颜色color
或者c
参数:
设置您自己的标记颜色:
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()
亲自试一试 »
您甚至可以通过使用颜色数组作为值来为每个点设置特定颜色c
参数:
笔记:你不能使用color
对此的论证,仅c
参数。
设置您自己的标记颜色:
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(["red","green","blue","yellow","pink","black","orange","purple","beige","brown","gray","cyan","magenta"])
plt.scatter(x, y, c=colors)
plt.show()
亲自试一试 »
Matplotlib 模块有许多可用的颜色图。
颜色图就像颜色列表,其中每种颜色的值范围为 0 到 100。
这是颜色图的示例:
该颜色图称为“viridis”,如您所见,它的范围从 0(紫色)到 100(黄色)。
您可以使用关键字参数指定颜色图cmap
在本例中为颜色图的值'viridis'
这是 Matplotlib 中可用的内置颜色图之一。
此外,您还必须创建一个包含值(从 0 到 100)的数组,散点图中的每个点都有一个值:
创建一个颜色数组,并在散点图中指定颜色图:
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()
陈述:
包括实际的颜色图:
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()
亲自试一试 »
您可以选择任何内置颜色图:
Name | Reverse | |||
---|---|---|---|---|
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 | 尝试一下 » |
您可以使用以下命令更改点的大小s
参数。
就像颜色一样,确保尺寸数组与 x 轴和 y 轴数组的长度相同:
设置您自己的标记大小:
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])
sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])
plt.scatter(x, y, s=sizes)
plt.show()
亲自试一试 »
您可以使用以下命令调整点的透明度alpha
参数。
就像颜色一样,确保尺寸数组与 x 轴和 y 轴数组的长度相同:
设置您自己的标记大小:
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])
sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])
plt.scatter(x, y, s=sizes, alpha=0.5)
plt.show()
亲自试一试 »
您可以将颜色图与不同大小的点组合起来。如果点是透明的,则效果最好:
创建包含 100 个 x 点、y 点、颜色和大小值的随机数组:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randint(100, size=(100))
y = np.random.randint(100, size=(100))
colors = np.random.randint(100, size=(100))
sizes = 10 * np.random.randint(100, size=(100))
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='nipy_spectral')
plt.colorbar()
plt.show()
亲自试一试 »
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!