python数据分析 制图_数据分析——作图(Python)

  • Post author:
  • Post category:python


一、基础设置

导入相关的库

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import seaborn as sns

%matplotlib inline #在ipython总显示图表

默认不显示中文,因此需要更改设置,显示中文

#显示中文

import matplotlib as mpl

mpl.rcParams[‘font.sans-serif’] = [u’SimHei’]

mpl.rcParams[‘axes.unicode_minus’] = False

设置全局变量

mpl.rc(‘font’,size=12) #字体

mpl.rc(‘figure’,figsize=(8,6)) #图像大小

mpl.rc(‘axes.spines’,right=False,top=False) #设置右边上边的横线是否显示

二、导入数据,并查看

data = sns.load_dataset(‘tips’)

data.head()

#字段含义分别是:总消费,小费,性别,是否吸烟,周末,时间,几个人

1244956-20180223135305908-1530144639.png

三、作图(matplotlib)

1、折线图

fig,ax = plt.subplots() #fig主要设置一些全局的变量,而ax主要负责画图

ax.plot(data.index,data[‘total_bill’])

fig.set_size_inches(12,6) #重新设置大小

plt.title(‘折线图标题’,fontsize=22) #标题,更改字体大小

ax.set_xlabel(‘X轴’,fontsize=18) #设置x轴,y轴的标题

ax.set_ylabel(‘Y轴’,fontsize=18)

plt.yticks(fontsize=14) #刻度字体大小

plt.xticks(fontsize=14)

plt.legend([‘标签’],fontsize=15) #标签内容字体大小

plt.savefig(‘折线图’,dpi=100) #保存图片,可以设置dpi

1244956-20180223135605635-608199269.png

2、柱形图

data_bar1 = data[‘tip’].groupby(data[‘day’]).mean() #统计数据,按照星期来分组

data_bar2 = data[‘tip’].groupby(data[‘time’]).mean() #统计数据,按照星期来分组

error = data[‘tip’].groupby(data[‘time’]).std()

fig,ax = plt.subplots(1,2) #画出两个区域

ax[0].bar(data_bar1.index,data_bar1.values) #第一个区域怎么画

ax[0].set_xlabel(‘小费星期关系图’,fontsize=16)

ax[0].set_ylabel(‘小费’,fontsize=16)

ax[0].legend([‘星期’])

ax[0].set_ylim(0,4) #设置Y轴最大最小值

ax[1].bar(data_bar2.index,data_bar2.values) #第二个区域怎么画

ax[1].errorbar(data_bar2.index,data_bar2.values,yerr = error,ls = ‘none’,color=’#96CDCD’,lw=6) #加入方差图

ax[1].legend([‘午晚餐’])

ax[1].set_xlabel(‘小费午晚餐关系图’,fontsize=16)

ax[1].set_xticklabels([‘晚餐’,’午餐’]) #更改坐标轴的名称

ax[1].set_ylim(0,4) #设置Y轴最大最小值

fig.set_size_inches(12,6) #设置整个图的大小

plt.savefig(‘柱形图’,dpi=100) #保存图片,可以设置dpi

1244956-20180223135722671-1132413023.png

3、横轴的柱形图

data_barh = data[‘tip’].groupby(data[‘sex’]).mean() #统计数据,男女小费

fig,ax = plt.subplots()

ax.barh(data_barh.index,data_barh.values,0.4) #0.4是宽度

fig.set_size_inches(6,2)

plt.title(‘横着的’)

ax.set_ylabel(‘性别’,fontsize=20)

ax.set_xlabel(‘小费’,fontsize = 20)

plt.xticks(fontsize=14)

ax.set_yticklabels([‘男性’,’女性’])

1244956-20180223135857530-1677680487.png

4、饼图

data_pie = data[‘size’].groupby(data[‘size’]).size()

fig,ax = plt.subplots()

ax.pie(data_pir,autopct=’%1.1f%%’,labels=data_pie.index,colors = [‘#B0E0E6′,’#B0C4DE’,’#A6A6A6′,’#FF3E96′,’#FFB5C5′,’#FFEBCD’])

#数据源,显示的数值,显示标签,颜色

fig.set_size_inches(8,8) #如果两个数字不相等会变成椭圆

1244956-20180223140012959-624103519.png

5、散点图

fig,ax = plt.subplots()

ax.scatter(data[‘tip’],data[‘total_bill’])

fig.set_size_inches(8,6)

ax.set_xlabel(‘小费’,fontsize=18)

ax.set_ylabel(‘总消费’,fontsize=18)

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

1244956-20180223140040510-2106106877.png

6、几个区域的画图方法(一种是用上面的柱形图那种方法 fig,ax = plt.subplots(1,2),另一种是下面的这种,这种可以自定义占据的空格数)

fig = plt.figure()

ax1 = plt.subplot2grid((2,3),(0,0))

ax1.bar(data_bar.index,data_bar.values)

fig.set_size_inches(12,6)

ax2 = plt.subplot2grid((2,3),(0,1),colspan=2)#占据几个空额,也可以是rowspan,一个是横的,一个是竖的

ax2.scatter(data[‘tip’],data[‘total_bill’])

ax3 = plt.subplot2grid((2,3),(1,0))

ax3.barh(data_barh.index,data_barh.values)

1244956-20180223140227955-348820142.png

7、两根柱形图对比

fig,ax = plt.subplots()

ax.bar(np.arange(4),data_bar.values,0.3) #横坐标先用数字代替

ax.bar(np.arange(4)+0.3,data_bar.values*2,0.3) #偏移一定量

ax.set_xticks(np.arange(4)+0.15) #重新设置x轴的位置

ax.set_xticklabels(data_bar.index) #重新设置名称

1244956-20180223140353935-1430701320.png

四、作图(seaborn)