数据分析第五天

Matpoltlib

1.绘图基本步骤

散点图的绘制
先倒入一个模块叫做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()

数据分析第五天_第1张图片

设置坐标轴名称,坐标轴刻度,标题

# 坐标轴的名称
plt.xlabel('x')
plt.ylabel('y')
#设置刻度
plt.xticks([0,np.pi,2*np.pi])
plt.yticks([-1,0,1])
#添加标题
plt.title('scatter')

数据分析第五天_第2张图片

保存图片

保存图片就一句话,我习惯保存为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指的是边缘的宽度。效果如下:
数据分析第五天_第3张图片
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()

效果如下
数据分析第五天_第4张图片

多个图形的绘制

多个图形的绘制几乎就相当于把原先一个画布拆分成多个,按照数组的方式找出多个画布的位置即可

#添加画布
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()

数据分析第五天_第5张图片

你可能感兴趣的:(numpy,matplotlib)