Python数据可视化-seaborn
详细介绍可以看seaborn官方API和example galler。
1 set_style( ) set( )
set_style( )是用来设置主题的,Seaborn有五个预设好的主题: darkgrid , whitegrid , dark , white ,和 ticks 默认: darkgrid
- import matplotlib.pyplot as plt
- import seaborn as sns
- sns.set_style("whitegrid")
- plt.plot(np.arange(10))
- plt.show()
- import seaborn as sns
- import matplotlib.pyplot as plt
- sns.set(style="white", palette="muted", color_codes=True) #set( )设置主题,调色板更常用
- plt.plot(np.arange(10))
- plt.show()
2 distplot( ) kdeplot( )
- import matplotlib.pyplot as plt
- import seaborn as sns
- df_iris = pd.read_csv('../input/iris.csv')
- fig, axes = plt.subplots(1,2)
- sns.distplot(df_iris['petal length'], ax = axes[0], kde = True, rug = True) # kde 密度曲线 rug 边际毛毯
- sns.kdeplot(df_iris['petal length'], ax = axes[1], shade=True) # shade 阴影
- plt.show()
- import numpy as np
- import seaborn as sns
- import matplotlib.pyplot as plt
- sns.set( palette="muted", color_codes=True)
- rs = np.random.RandomState(10)
- d = rs.normal(size=100)
- f, axes = plt.subplots(2, 2, figsize=(7, 7), sharex=True)
- sns.distplot(d, kde=False, color="b", ax=axes[0, 0])
- sns.distplot(d, hist=False, rug=True, color="r", ax=axes[0, 1])
- sns.distplot(d, hist=False, color="g", kde_kws={"shade": True}, ax=axes[1, 0])
- sns.distplot(d, color="m", ax=axes[1, 1])
- plt.show()
3 箱型图 boxplot( )
- import matplotlib.pyplot as plt
- import seaborn as sns
- df_iris = pd.read_csv('../input/iris.csv')
- sns.boxplot(x = df_iris['class'],y = df_iris['sepal width'])
- plt.show()
4 联合分布jointplot( )
- tips = pd.read_csv('../input/tips.csv') #右上角显示相关系数
- sns.jointplot("total_bill", "tip", tips)
- plt.show()
- tips = pd.read_csv('../input/tips.csv')
- sns.jointplot("total_bill", "tip", tips, kind='reg')
- plt.show()
5 热点图heatmap( )
internal_chars = ['full_sq', 'life_sq', 'floor', 'max_floor', 'build_year', 'num_room', 'kitch_sq', 'state', 'price_doc']
corrmat = train[internal_chars].corr()
f, ax = plt.subplots(figsize=(10, 7))
plt.xticks(rotation='90')
sns.heatmap(corrmat, square=True, linewidths=.5, annot=True)
plt.show()
plt.scatter(x=train['full_sq'], y=train['price_doc'], c='r')
plt.xlim(0,500)
plt.show()
7.pointplot画出变量间的关系
grouped_df = train_df.groupby('floor')['price_doc'].aggregate(np.median).reset_index()
plt.figure(figsize=(12,8))
sns.pointplot(grouped_df.floor.values, grouped_df.price_doc.values, alpha=0.8, color=color[2])
plt.ylabel('Median Price', fontsize=12)
plt.xlabel('Floor number', fontsize=12)
plt.xticks(rotation='vertical') plt.show()
8 pairplot( )
- import seaborn as sns
- import matplotlib.pyplot as plt
- iris = pd.read_csv('../input/iris.csv')
- sns.pairplot(iris, vars=["sepal width", "sepal length"],hue='class',palette="husl")
- plt.show()
9 FacetGrid( )
facetGrid可以根据类别特征各种不同组合进行显示,下面就是根据婚姻与学历情况进行分成了10组,横(row)的表示按婚姻分类显示,竖(col)的表示按学历分类显示
grid=sns.FacetGrid(df,row='martial_status',col='education',palette='seismic',size=4)
grid.map(plt.scatter,'gjj_loan_balance','max_overduer_days')
grid.add_legend()
plt.show()
10 barplot( )
f, ax=plt.subplots(figsize=(12,20))
#orient='h'表示是水平展示的,alpha表示颜色的深浅程度
sns.barplot(y=group_df.sub_area.values, x=group_df.price_doc.values,orient='h', alpha=0.8, color='red')
#设置y轴、X轴的坐标名字与字体大小
plt.ylabel('price_doc', fontsize=16)
plt.xlabel('sub_area', fontsize=16)
#设置X轴的各列下标字体是水平的
plt.xticks(rotation='horizontal')
#设置Y轴下标的字体大小
plt.yticks(fontsize=15)
plt.show()
注:如果orient='v'表示成竖直显示的话,一定要记得y=group_df.sub_area.values, x=group_df.price_doc.values调换一下坐标轴,否则报错
f, ax=plt.subplots(figsize=(12,20))
sns.barplot(y='area', x='fre',data=df_idcard_city,orient='h', color='red')
plt.ylabel('地域', fontsize=16)
plt.xlabel('频数', fontsize=16)
plt.xticks(rotation='horizontal')
plt.yticks(fontsize=15)
plt.show()
11.bar图
import matplotlib.pyplot as plt
import numpy as np
plt.rc('font', family='SimHei', size=13)
num = np.array([13325, 9403, 9227, 8651])
ratio = np.array([0.75, 0.76, 0.72, 0.75])
men = num * ratio
women = num * (1-ratio)
x = ['聊天','支付','团购\n优惠券','在线视频']
width = 0.5
idx = np.arange(len(x))
plt.bar(idx, men, width, color='red', label='男性用户')
plt.bar(idx, women, width, bottom=men, color='yellow', label='女性用户') #这一块可是设置bottom,top,如果是水平放置的,可以设置right或者left。
plt.xlabel('应用类别')
plt.ylabel('男女分布')
plt.xticks(idx+width/2, x, rotation=40)
#bar图上显示数字
for a,b in zip(idx,men):
plt.text(a, b+0.05, '%.0f' % b, ha='center', va= 'bottom',fontsize=12)
for a,b,c in zip(idx,women,men):
plt.text(a, b+c+0.5, '%.0f' % b, ha='center', va= 'bottom',fontsize=12)
plt.legend()
plt.show()
12、双Y轴绘图
本例主要用dataframe的两个列进行双Y轴画图
eng_name,chn_name,GDP,rate
a, 中国,100,0.6
b,美国,180,0.3
c,日本,80,0.2
d,瑞典,65,0.15
f,荷兰,56,0.23
#读取的时候,讲索引列变为chn_name,这样画图时候X轴自动为索引
df=pd.read_csv('b.csv',index_col='chn_name')
df.index.name='国家'#这样x轴的label就变成‘国家了’。
plt.rc('font', family='SimHei', size=13)
plt.figure()
df['GDP'].plot(kind='bar')
plt.ylabel('GDP')
plt.title('国家发展情况对比') p = df['rate']
p.plot(color='black',secondary_y=True,style='--o',linewidth=2) #style--表示虚线,-表示实线
plt.ylabel('增长速度')
x=[0,1,2,3,4]#因为x轴是汉字,所以默认对应的数值是从0开始的
for a,b in zip(x,p):
plt.text(a+0.1, b+0.02, '%.2f' % b, ha='center', va= 'bottom',fontsize=12)
education=df.education.value_counts()
df_education=pd.DataFrame({'education':education.index[1:],'fre':education.values[1:]})
df_education.index=df_education.education
plt.figure()
df_education.fre.plot(kind='bar')
plt.ylabel('人数')
plt.xlabel('学历')
plt.title('学历分布情况')
plt.show()
13、画饼状图
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
#根据value_counts()结果画饼图
phone=df.phone_operator.value_counts()
df_phone=pd.DataFrame({'phone_operator':phone.index[1:],'fre':phone.values[1:]})
plt.rc('font', family='SimHei', size=13)
fig = plt.figure()
plt.pie(df_phone.fre,labels=df_phone.phone_operator,autopct='%1.2f%%') #画饼图(数据,数据对应的标签,百分数保留两位小数点)
plt.title("手机运营商分布")
plt.show()
也可以参考:http://seaborn.pydata.org/tutorial/distributions.html
知乎专栏关于seaborn的:https://zhuanlan.zhihu.com/p/27570774
Python数据可视化-seaborn的更多相关文章
- Python数据可视化-seaborn库之countplot
在Python数据可视化中,seaborn较好的提供了图形的一些可视化功效. seaborn官方文档见链接:http://seaborn.pydata.org/api.html countplot是s ...
- 【数据科学】Python数据可视化概述
注:很早之前就打算专门写一篇与Python数据可视化相关的博客,对一些基本概念和常用技巧做一个小结.今天终于有时间来完成这个计划了! 0. Python中常用的可视化工具 Python在数据科学中的地 ...
- Python数据可视化的四种简易方法
摘要: 本文讲述了热图.二维密度图.蜘蛛图.树形图这四种Python数据可视化方法. 数据可视化是任何数据科学或机器学习项目的一个重要组成部分.人们常常会从探索数据分析(EDA)开始,来深入了解数据, ...
- Python数据可视化基础讲解
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:爱数据学习社 首先,要知道我们用哪些库来画图? matplotlib ...
- Python数据可视化编程实战——导入数据
1.从csv文件导入数据 原理:with语句打开文件并绑定到对象f.不必担心在操作完资源后去关闭数据文件,with的上下文管理器会帮助处理.然后,csv.reader()方法返回reader对象,通过 ...
- Python数据可视化——使用Matplotlib创建散点图
Python数据可视化——使用Matplotlib创建散点图 2017-12-27 作者:淡水化合物 Matplotlib简述: Matplotlib是一个用于创建出高质量图表的桌面绘图包(主要是2D ...
- Python数据可视化编程实战pdf
Python数据可视化编程实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1vAvKwCry4P4QeofW-RqZ_A 提取码:9pcd 复制这段内容后打开百度 ...
- python --数据可视化(一)
python --数据可视化 一.python -- pyecharts库的使用 pyecharts--> 生成Echarts图标的类库 1.安装: pip install pyecharts ...
- python 数据可视化
一.基本用法 import numpy as np import matplotlib.pyplot as plt x = np.linspace(-1,1,50) # 生成-1到1 ,平分50个点 ...
随机推荐
- 新建虚拟机_WIN8 64位系统_启动报错Directory "EZBOOT" not found
准备工作:下载win8 64 镜像文件 1.虚拟机安装win8 64位操作系统,新建虚拟机步骤同XP系统 2.BIOS设置CD/ROM启动,但启动报错,如下,由于镜像文件超过4G,无法从虚拟机安装,需 ...
- 理解Hbase和BigTable(转)
add by zhj: 这篇文章写的通俗易懂,介绍了HBase最重要的几点特性. 英文原文:https://dzone.com/articles/understanding-hbase-and-big ...
- C# Asp.net中xml串与对象互相转换
public class XmlUtil { #region 反序列化 /// <summary> /// 将XML字符串反序列化为对象 /// </summary> /// ...
- caffe编译报错解决
添加ssd中的一些层之后,编译报错: ../lib/libcaffe.so.1.0.0-rc5:对‘boost::match_results<__gnu_cxx::__normal_iterat ...
- RSA 时序攻击
RSA的破解从理论上来讲是大数质数分解,可是就是有一些人另辟蹊径,根据你解密的时间长短就能破解你的RSA私钥. 举一个不恰当但是比较容易理解的例子: 密文0101 私钥0110 明文0100 问题的关 ...
- 关于linux下mysql安装和卸载
卸载:https://www.cnblogs.com/Lenbrother/articles/6203620.html 卸载Mysql 找到了这篇文章:http://zhangzifan.com/ce ...
- Recover InnoDB dictionary
为什么我们需要恢复innodb的字典信息?当我们drop 一个表时,发现误操作,这时又没有备份,那么想恢复数据是非常困难的.所以我们想恢复被删除的表时,首先就需要恢复表结构,目前已经有了undrop- ...
- Pycharm快捷键大全(windows + Mac)
Windows快捷键 1.编辑 Ctrl + Space 基本的代码完成(类.方法.属性) Ctrl + Alt + Space 快速导入任意类 Ctrl + Shift + Enter ...
- PHP 注册错误和异常处理机制
注册错误和异常处理机制有三个PHP函数需要学习 1. register_shutdown_function('Bootstrap\Library\Frame::fatalError'); 2. set ...
- sap component 导航 链接
1: 定义一个导航链接名字,这个名子如果在程序中遇到(该名字会在程序中使用),就会触发这样一个导航. 导航有两个view,一个原来的view,一个出发abc之后的target view,也就是目标视图 ...