1、创建散点图
通过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()
Result:
上面示例中的观察结果是13辆汽车经过的结果。
X轴显示汽车的年龄。
Y轴表示汽车通过时的速度。
观测值之间有任何关系吗?
汽车似乎越新,行驶速度就越快,但这可能是一个巧合,毕竟我们只注册了13辆汽车。
2、对比图
在上面的示例中,速度和年龄之间似乎存在某种关系,但是如果我们还绘制另一天的观测值怎么办? 散点图还会告诉我们其他内容吗?
例如:
在同一张图上绘制两个图:
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()
Result:
注意:这两个图以两种不同的颜色绘制,默认情况下为蓝色和橙色,您将在本章后面学习如何更改颜色。
通过比较这两个图,我可以肯定地说,它们都给出了相同的结论:汽车越新,行驶速度越快。
3、颜色
可以使用以下命令为每个散点图设置自己的颜色
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()
Result:
4、每个点的颜色
甚至可以通过使用颜色数组作为每个点的值来设置特定颜色
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()
Result:
5、ColorMap
Matplotlib模块具有许多可用的颜色图。
颜色图就像颜色列表,其中每种颜色的值范围从0到100。
这是一个颜色图的示例:
该颜色图称为“viridis”,如您所见,其范围从0(紫色)到100(黄色)。
如何使用ColorMap
您可以使用关键字参数指定颜色图
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()
Result:
可以通过包含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()
Result:
可用的颜色图
您可以选择任何内置的颜色表:
名字 | 反向 |
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 |
6、大小尺寸
您可以使用
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()
Result:
7、Alpha
可以使用
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()
Result:
8、组合颜色大小和透明度
可以在点上组合具有不同大小的颜色图。 如果点是透明的,则可以最好地可视化:
例如:
创建带有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()
Result: