R用户要整点python--seaborn画图

科技   2024-09-03 09:53   山东  
 今天是生信星球陪你的第988天

   
公众号里的文章大多数需要编程基础,如果因为代码看不懂,而跟不上正文的节奏,可以来找我学习,相当于给自己一个新手保护期。我的课程都是循环开课。下一期的时间,点进去咨询微信↓
生信分析直播课程(10月初下一期)
生信新手保护学习小组(预计9.13下一期)
单细胞陪伴学习小组(预计9.16下一期)

1.单变量作图

    (1)直方图

    (2)条形图,只能画离散型

    练习

2.两变量作图

    (1)箱线图

    (2)点图,默认带趋势线

    练习

3.分面

    (1)自带分面参数的点图

    (2)通用分面

    练习


Seaborn 是一个很受欢迎的绘图库。它使用“tidydata”,可以快速绘制多个变量。
直方图:histplot,连续型和离散型数据都能画
条形图:countplot,只能画离散型
箱线图:boxplot
点图:regplot,自带趋势线,可以用参数设置不画趋势线。
趋势线图:lmplot(点图+趋势线图,可以用row或者col参数分面)

1.单变量作图


(1)直方图

import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset('iris')
#直方图,可以画连续型数据,也可以画离散型数据
sns.histplot(iris.sepal_length,kde=True)
plt.show()

课程里使用的seaborn版本是0.11.2,画箱线图和countplot时自带不同颜色,
现在最新的seaborn版本是0.13.2,颜色都是青蓝,我自己搜索设置了一下颜色。
sns.histplot(x = 'species',palette='Set2',hue = 'species',data = iris)
plt.show()

(2)条形图,只能画离散型

sns.countplot(x = 'species',palette='Set2',hue = 'species',data = iris)
plt.show()

练习

1.使用 seaborn countplot() 函数绘制sex列的条形图。
2.使用 seaborn histplot() 函数绘制 total_bill 的直方图。
import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset('tips')
# Bar plot
sns.____(x=____, data=tips)
plt.show()
# Histogram
sns.____(____, kde = True)
plt.show()
答案:
import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset('tips')
# Bar plot
sns.countplot(x='sex', data=tips)
plt.show()

# Histogram
sns.histplot(tips.total_bill, kde = True)
plt.show()

2.两变量作图

(1)箱线图

sns.boxplot(x='species', y='sepal_length', data=iris,palette='Set2',hue = 'species')
plt.show()

(2)点图,默认带趋势线

sns.regplot(x='sepal_length', y='sepal_width', data=iris)
plt.show()
#点图,不带趋势线
sns.regplot(x='sepal_length', y='sepal_width', data=iris,fit_reg=False)
plt.show()

练习

1.使用 seaborn boxplot() 函数画箱线图,横坐标是sex,纵坐标是tip
2.使用 seaborn regplot() 函数生成散点图,横坐标是total_bill,纵坐标是tip
import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset('tips')
# Boxplot for tip by sex
sns.____(____=____, ____=____, data=tips)
plt.show()
# Scatter plot of total_bill and tip
sns.____(____=____, ____=____, ____=tips)
plt.show()
答案
import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset('tips')

# Boxplot for tip by sex
sns.boxplot(x='sex', y='tip', data=tips)
plt.show()
# Scatter plot of total_bill and tip
sns.regplot(x='total_bill', y='tip', data=tips)
plt.show()

3.分面

(1)自带分面参数的点图

col='species'代表按照species列分多张子图
#点图分面,regplot没有col参数,不能直接分面
sns.lmplot(x='sepal_length', y='sepal_width', data=iris,fit_reg=False,col='species')
plt.show()

(2)通用分面

#其他图的分面
g = sns.FacetGrid(iris, col="species")
g = g.map(plt.hist,"sepal_length")
plt.show()

练习

1.用 lmplot() 画散点图,横坐标是“total_bill”,纵坐标是“tip”,用“smoker”分面,并用“sex”为点着色。
2.用 FacetGrid() 函数创建一个分面对象,该对象由“time”“smoker”分面,并由“sex”着色,在 facet 上调用 .map() ,生成 'total_bill''tip' 的分面散点图。
import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

# Scatter plot of total_bill and tip faceted by smoker and colored by sex
sns.lmplot(x=____, y=____, data=tips, hue=____, col=____)
plt.show()

# FacetGrid of time and smoker colored by sex
facet = sns.____(tips, col="time", row=____, hue=____)

# Map the scatter plot of total_bill and tip to the FacetGrid
facet.____(____, ____, ____)
plt.show()
答案:
import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset('tips')

# Scatter plot of total_bill and tip faceted by smoker and colored by sex
sns.lmplot(x='total_bill', y='tip', data=tips, hue='sex', col='smoker')
plt.show()

# FacetGrid of time and smoker colored by sex
facet = sns.FacetGrid(tips, col="time", row='smoker', hue='sex')

# Map the scatter plot of total_bill and tip to the FacetGrid
facet.map(plt.scatter, 'total_bill''tip')
plt.show()



生信星球
一个零基础学生信的平台-- 原创结构化图文/教程,精选阶段性资料,带你少走弯路早入门,收获成就感,早成生信小能手~
 最新文章