今日正式进入可视化分析图表学习环节
数据分析图表的类型包括条形图、柱状图、折线图、饼图、散点图、面积图、环形图、雷达图等
一张完整的图表一般包括:画布、图表标题、绘图区、数据系列、坐标轴及标题、图例、文本标签、网格线。
1.图表的常用设置
主要包括颜色设置、线条样式、标记样式、设置画布、坐标轴、添加文本标签、设置标题和图例、添加注释文本、调整图表与画布边缘间距以及其他设置等。
1.1基本绘图plot函数
Matplotlib基本绘图主要使用plot函数
matplotlib.pyplot.plot(x,y,format_string,**kwargs)
x: x轴数据
y: y轴数据
format_string: 控制曲线格式的字符串,包括颜色、线条样式和标记样式
绘制简单的折线图
import matplotlib.pyplot as plt
x = range(1, 15, 1)
y = range(1, 42, 3)
plt.plot(x, y)
plt.show()
下面导入Excel体温表的数据,绘制体温折线图
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('体温.xls')
x = df['日期']
y = df['体温']
plt.plot(x, y)
plt.show()
输出结果
1.1.1颜色设置
color参数可以设置线条颜色,通用颜色值自行查询。
其他颜色可以通过十六进制字符串指定,或者通过颜色名称指定。
1.1.2线条样式
linestyle: 可选参数,可以设置线条的样式,设置值如下:
“-”: 实线,默认值
“--”:双划线
“-.”: 点划线
“:”:虚线
1.1.3标记样式
maker: 可选参数, 可以设置标记样式。
‘.’ 点标记
‘,’ 像素标记
‘o’ 圆标记
‘v’ 倒三角标记
‘^’ 正三角标记
‘<’ 左三角标记
‘>’ 右三角标记
‘1’ 下箭头标记
‘2’ 上箭头标记
‘3’ 左箭头标记
‘4’ 右箭头标记
‘s’ 正方形标记
‘p’ 五边形标记
‘*’ 星形标记
‘h’ 六边形标记 1
‘H’ 六边形标记 2
‘+’ 加号标记
‘x’ X 标记
‘D’ 菱形标记
‘d’ 窄菱形标记
‘|’ 竖直线标记
‘_’ 水平线标记
在上述体温表中设置颜色以及样式
plt.plot(x, y, color='m', linestyle='-', marker='o', mfc='w')
输出结果
1.2 设置画布
在Matplotlib中可以使用figure方法设置画布大小、分辨率、颜色和边框等
matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
num:图像编号或名称,数字为编号:字符串为名称,可以通过该参数激活不同的画布
figsize:指定画布的宽和高, 单位为英寸
dpi:指定绘图对象的分辨率,即每英寸包含多少个像素,默认值为80.像素越大,画布越大。
facecolor:背景颜色。
edgecolor:边框颜色。
frameon:是否显示边框。默认值为True,绘制边框;如果为False,则不绘制边框。
自定义一个5X3的白色画布,代码如下
import pandas as pd
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(5, 3), facecolor='yellow')
df = pd.read_excel('体温.xls')
x = df['日期']
y = df['体温']
plt.plot(x, y, color='m', linestyle='-', marker='o', mfc='w')
plt.show()
输出结果
1.3设置坐标轴
1.3.1x轴、y轴标题
设置x轴和y轴的标题主要使用xlabel函数和ylabel函数
import pandas as pd
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(5, 3), facecolor='yellow')
df = pd.read_excel('体温.xls')
x = df['日期']
y = df['体温']
plt.plot(x, y, color='m', linestyle='-', marker='o', mfc='w')
plt.xlabel('2020年2月')
plt.ylabel('基础体温')
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
plt.show()
输出结果
注意两个可能出现的问题
(一)中文乱码
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
(二)负号不显示
plt.rcParams['axes.unicode_minus'] = False
1.3.2坐标轴刻度
默认情况下的横坐标和纵坐标显示的值有时可能达不到我们的要求,需要借助xticks函数和yticks函数分别对x轴和y轴的值进行设置。
xticks(locs, [labels], **kkwargs)
locs:数组,表示x轴上的刻度。
labels:也是数组,默认值和locs相同。locs表示位置,而labels则决定该位置上的标签,如果赋予了labels空值,则x轴将只有刻度而不会显示任何值
plt.xticks(range(1, 15, 1)) #设置为1到15的连续数字
上述举例中的日期格式看起来不是很直观,下面将x轴刻度标签直接改为“日”
dates=['1日','2日','3日','4日','5日',
'6日','7日','8日','9日','10日',
'11日','12日','13日','14日']
plt.xticks(range(1,15,1),dates)