散点图的绘制
先倒入一个模块叫做matplotlib,这个模块的作用就是绘图,类似matlab,大概理解就是这样的。从matplotlib里面再导入模块pyplot,简记为plt
import matplotlib.pyplot as plt
第一步:创建画布:
plt.figure(figure=(4,6),facecolor='red',edgecolor='white')
figure参数传入的是一个元组类型,表示创建的画布的宽和高,facecolor指的是画布的颜色,不包括坐标里面的,只是坐标的外围,edgecolor指画布的边缘颜色
第二步:指定x,y值
画布是用描点画图的,每一个点都有一个坐标值,比如A(2,3),B(3,2),这里需要传入多个数值,所以不可能一个个输入数值。这里需要用到数组,也就是将横坐标的值放到一个数组中,将列坐标的值放入一个数组中。上面的AB的值就可以写为x=np.array[2,3],y=np.array[3,2]
这里用其他的例子
x=np.arange(0,2*np.pi,0.01) #0.01指的是步长
y=np.sin(x)
第三步:指定画图的类型
画图的类型有很多,比如散点图,直方图,饼图等等。今天讲散点图scatter
plt.scatter(x,y) #x,y就是上面写的数组x,y。这里会自动转换成成对的坐标点
第四步:展示所会的图
plt.show()
# 坐标轴的名称
plt.xlabel('x')
plt.ylabel('y')
#设置刻度
plt.xticks([0,np.pi,2*np.pi])
plt.yticks([-1,0,1])
#添加标题
plt.title('scatter')
保存图片就一句话,我习惯保存为png格式,因为jpg格式有些时候打开会出错或者根本打不开
# 保存图像
plt.savefig('scatter.png')
plt.scatter(x,y,s=100,c=y,cmap='rainbow',alpha=0.7,
edgecolor='white',linewidths=1)
s:指的是点的大小,c指的是点的颜色,cmap指的是点的颜色,这里c=y,cmap='颜色’就是给点上色。也可以直接写c='颜色‘,不过可用的颜色比较少而已。alpha指的是透明度,值越小越透明。edgecolor指的是点的边缘颜色,linewidths指的是边缘的宽度。效果如下:
cmap的颜色有多种,拿走不谢:‘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’, ‘PuBuGn’, ‘PuBuGn_r’, ‘PuBu_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’, ‘YlGnBu’, ‘YlGnBu_r’, ‘YlGn_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’, ‘gnuplot2’, ‘gnuplot2_r’, ‘gnuplot_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’, ‘turbo’, ‘turbo_r’, ‘twilight’, ‘twilight_r’, ‘twilight_shifted’, ‘twilight_shifted_r’, ‘viridis’, ‘viridis_r’, ‘winter’, ‘winter_r’
除了上面的一些基础方法,还有一些固定的额配置,使用的时候,只需要更改一些数值就行
#一、 画布参数
#1 修改字体
plt.rcParams['font.sans-serif'] = 'SimHei'
#2 修改符号显示问题
plt.rcParams['axes.unicode_minus'] = False
#3 修改背景颜色
plt.rcParams['axes.facecolor'] = '0D0434'
#4 更改刻度的字体颜色
plt.rcParams['xtick.color'] = 'green'
plt.rcParams['ytick.color'] = 'blue'
#5 更改轴的颜色
plt.rcParams['axes.edgecolor'] = 'white'
#6 字体的更改
font = {'family':'SimHei', #字体的颜色
'weight':'normal', #字体宽度
'size':24, #字体大小
'color':'gray' #字体颜色
}
其中font要加在xtick和ytick和title上,主要是设置字体的
完整代码如下:
import matplotlib.pyplot as plt
import numpy as np
#一、 画布参数
#1 修改字体
plt.rcParams['font.sans-serif'] = 'SimHei'
#2 修改符号显示问题
plt.rcParams['axes.unicode_minus'] = False
#3 修改背景颜色
plt.rcParams['axes.facecolor'] = '0D0434'
#4 更改刻度的字体颜色
plt.rcParams['xtick.color'] = 'green'
plt.rcParams['ytick.color'] = 'blue'
#5 更改轴的颜色
plt.rcParams['axes.edgecolor'] = 'white'
#6 字体的更改
font = {'family':'SimHei', #字体的颜色
'weight':'normal', #字体宽度
'size':24, #字体大小
'color':'gray' #字体颜色
}
plt.figure(figsize=(4,6),facecolor='red',edgecolor='white')
x=np.arange(0,2*np.pi,0.01)
y=np.sin(x)
plt.scatter(x,y,s=100,c=y,cmap='rainbow',alpha=0.7,
edgecolor='white',linewidths=1)
# 3.1 坐标轴的名称
plt.xlabel('x',fontdict=font)
plt.ylabel('y',fontdict=font)
#3.1 设置刻度
plt.xticks([0,np.pi,2*np.pi])
plt.yticks([-1,0,1])
#3.2 添加标题
plt.title('scatter',fontdict=font)
plt.show()
多个图形的绘制几乎就相当于把原先一个画布拆分成多个,按照数组的方式找出多个画布的位置即可
#添加画布
p1 = plt.figure(figsize=(2,6))
#添加第一个子图
p1.add_subplot(3,1,1)
#
x = np.arange(0,2*np.pi,0.1)
y1 = np.sin(x)
plt.scatter(x,y1)
#添加第二个子图
p1.add_subplot(3,1,2)
y2 = np.cos(x)
plt.scatter(x,y2)
#添加第三个子图
p1.add_subplot(3,2,5)
plt.scatter(np.sin(x),np.cos(x))
#添加第四个子图
p1.add_subplot(3,2,6)
plt.scatter(np.sin(x),np.cos(x))
#展示
plt.show()