【Python数据分析】超详细的可视化教程(一):利用Matplotlib进行静态图可视化

前言:Python主要有Matplotlib、Seaborn和Bokeh三个库进行可视化,一个比一个高级,其中Bokeh可以添加tabs、tools、slider实现交互。
本文讲Matplotlib,由于mat是基础绘图,它在高级绘图中也有使用,故此篇不会太长。大家访问他们的官网,查看参数、学习例图制作;同样,也可以与通义等联网模型进行交流学习。
此外,老早之前写的两篇基础性文章被自动vip了,现在已重新设置为免费,大家可以查看:

准备工作:

import matplotlib.pyplot as plt #导入函数库
import seaborn as sns
import pandas as pd
import numpy as np

一个小妙招:重新设置工作路径,导出图片时可以免去输入路径之繁琐!

import os
os.getcwd() #获取
os.chdir("D:\PY3.8\PythonDA\pre")	#创建工作目录
os.getcwd() 

导入数据,并查看数据基本情况

data= pd.read_csv('D:\PY3.8\PythonDA\source\code\Chapter05\HR_comma_sep.csv')
data.head()
data.shape

一、Matplotlib

1. 散点图与气泡图

【散点图:scatter】

#【散点图:scatter】
x_hrs = data['average_montly_hours'][0:5]
y_level=data['satisfaction_level'][0:5]
plt.scatter(x_hrs,y_level,c='r',alpha=0.5)
plt.rcParams['font.family'] = 'Microsoft YaHei'
#import matplotlib 后选择个支持中文的字体
plt.title('满意度与工作时间')
plt.xlabel('工作时间')
plt.ylabel('满意度')
plt.savefig('mat_sc')

在这里插入图片描述
【气泡图:引入s参数】

#【气泡图:scatter() s】
x_hrs = data['average_montly_hours'][0:5]
y_level=data['satisfaction_level'][0:5]
plt.scatter(x_hrs,y_level,c=range(5),alpha=0.5,s=200*y_level)
#通过s=200*y_level,显示他们的相对大小
plt.rcParams['font.family'] = 'Microsoft YaHei' 
plt.title('满意度与工作时间')
plt.xlabel('工作时间')
plt.ylabel('满意度')
plt.savefig('mat_sc_bubble')

在这里插入图片描述

2. 柱状图与直方图

两者区别:barchart展现两个变量,histchart展现单个变量(连续变量设置bins可以离散化)
我们引入subplots将他们绘制在一起

#【bar&hist】
fig,(ax1,ax2)=plt.subplots(1,2)
ax1.hist(data['salary'])
ax1.set(xlabel='salary',title='hist')
high_sm,low_sm,medium_sm,=data.groupby('salary')['satisfaction_level'].mean() #求平均数
#通过data.groupby('salary')['satisfaction_level'].mean() ,查看返回顺序
ax2.bar(['low','mediun','high'],[high_sm,low_sm,medium_sm])
ax2.set(xlabel='salary',title='bar')
plt.savefig('hist_bar')

哦这里还有个关于分组求平均数的小插曲,请看我的另一篇:Python谜之BUG论:5.1更新:groupby()求平均报错,近来最奇怪的bug!
结果:
在这里插入图片描述

3. 饼图【重要】

这一节包含了调色的详细解释,饼图参数讲解也很详细,很重要
简单饼图:

#【饼图pie】
pie_name=np.arange(1,6)
plt.pie(x_hrs,labels=pie_name,startangle=90,counterclock=False,autopct='%1.2f%%')
#startangle=90使第一部分是垂直的,counterclock=False控制方向
#autopct='%1.2f%%'显示具体数值
plt.title('饼状图')
plt.savefig('pie')

在这里插入图片描述
调色,突出某一部分:

#虽然有颜色,但丑得一言难尽
fig,(pie1,pie2)=plt.subplots(1,2,figsize=(10,5))
#figsize=(10,5) 设置窗口大小
pie1.pie(x_hrs,labels=pie_name,startangle=90,counterclock=False,autopct='%1.2f%%',colors=sns.color_palette("pastel"))
#通过sns.color_palette取色,颜色条参见:https://seaborn.pydata.org/tutorial/color_palettes.html
#注意sns是seaborn,所以你需要先import
#颜色也可以通过plt.colormaps['']来提取,但是需要手动1234指定,不太方便
#代码:cmap=plt.colormaps['pastel'] 参数设定:colors=cmap[1,2,3,4,5],
#mat颜色调参见:https://matplotlib.org/stable/gallery/color/colormap_reference.html
pie1.set(title='颜色美丽的饼状图')
pie2.pie(x_hrs,labels=pie_name,startangle=90,counterclock=False,autopct='%1.2f%%',colors=sns.color_palette("pastel"),
        explode=(0.1,0,0,0,0))#设置每一块的离心距离
pie2.set(title='设置explode参数后')
plt.savefig('pie_double')

在这里插入图片描述

二、直接用pandas绘图

关于pandas的解释:
《pyython数据分析》 [印] 阿维纳什·纳夫拉尼

#【用pandas绘图】
df = pd.concat([data.average_montly_hours[0:10], data.satisfaction_level[0:10]], axis=1)
 #利用数据现有数据手搓个小数据的数据集
df.plot('average_montly_hours','satisfaction_level',marker='o')
#plot默认为折线图,所以可以省略
plt.savefig('pd_line')

在这里插入图片描述
至于boxplot,到seaborn画

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值