更新后的python seaborn用于科研图绘

python seaborn 0.12

数据科学和科研绘图的人离不开R的ggplot2,尽管python已经有了诸如matplotlib、seaborn等强大绘图包,兼有basemap、cartopy等空间数据可视化能力,但相较于R的ggplot,总感觉欠缺了点东西。

前不久seaborn更新了0.12版本,向ggplot2看齐,可以说是很大的迈进了

此外,整个seaborn的API重写后,操作方式也变化很大,科研人表示要重新开始学习了,不得不感叹开源软件发展的速度,稍微不学习就会落下。

  • seaborn.objects 接口
    命名空间是在 0.12 版中引入的seaborn.objects,作为制作 seaborn 绘图的全新界面。它提供了更加一致和灵活的 API,包括用于转换和绘制数据的可组合类的集合。与现有seaborn功能相比,新界面旨在支持端到端绘图规范和自定义,而无需下拉到 matplotlib(尽管必要时仍可以这样做)。
  • 对象接口目前是实验性的并且不完整。它足够稳定,可以认真使用,但肯定有一些粗糙的边缘和缺失的功能。
  • 完整的文档参见http://seaborn.pydata.org/api.html#objects-api,目测整个文档还没有写完,但是开发人员迫不及待公布了此版本。

首先更新到新版本:

pip install seaborn==0.12

先以散点图为例,这个add()就像R中的 + geom()…

data = sns.load_dataset('penguins')
data
so.Plot(data, x="bill_length_mm", y="bill_depth_mm").add(so.Dot(), color="species")

在R中比较方便的拟合,现在seaborn也很容易了,只需要so.PolyFit()

tips = sns.load_dataset('tips')
so.Plot(tips, x="total_bill", y="tip", color="time").add(so.Dots()).add(so.Line(), so.PolyFit())

接下来是面积图,这种图经常用于表征极端气候、碳排放的长期变化等等

healthexp = sns.load_dataset('healthexp')
p = so.Plot(healthexp, "Year", "Spending_USD", color="Country")
p.add(so.Line())
p.add(so.Area(), so.Stack())

接下来是散点抖动图,也非常容易

penguins = sns.load_dataset('penguins')
so.Plot(penguins, x="species", y="body_mass_g", color="sex")\
.add(so.Dot(), so.Dodge(), so.Jitter(.3))

so.Plot(healthexp, x="Year", y="Life_Expectancy")\
.facet("Country", wrap=3).add(so.Line(alpha=.3), group="Country", col=None).add(so.Line(linewidth=3))

最后是分面的功能,这在R中非常容易,现在在python中也很方便了

相同的功能,如果用matplotlib,需要以下代码:

# libraries
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
 
# Make a data frame
df=pd.DataFrame({'x': range(1,11), 'y1': np.random.randn(10), 'y2': np.random.randn(10)+range(1,11), 'y3': np.random.randn(10)+range(11,21), 'y4': np.random.randn(10)+range(6,16), 'y5': np.random.randn(10)+range(4,14)+(0,0,0,0,0,0,0,-3,-8,-6), 'y6': np.random.randn(10)+range(2,12), 'y7': np.random.randn(10)+range(5,15), 'y8': np.random.randn(10)+range(4,14), 'y9': np.random.randn(10)+range(4,14) })
 
# Initialize the figure style
plt.style.use('seaborn-darkgrid')
 
# create a color palette
palette = plt.get_cmap('Set1')
 
# multiple line plot
num=0
for column in df.drop('x', axis=1):
    num+=1
 
    # Find the right spot on the plot
    plt.subplot(3,3, num)
 
    # plot every group, but discrete
    for v in df.drop('x', axis=1):
        plt.plot(df['x'], df[v], marker='', color='grey', linewidth=0.6, alpha=0.3)
 
    # Plot the lineplot
    plt.plot(df['x'], df[column], marker='', color=palette(num), linewidth=2.4, alpha=0.9, label=column)
 
    # Same limits for every chart
    plt.xlim(0,10)
    plt.ylim(-2,22)
 
    # Not ticks everywhere
    if num in range(7) :
        plt.tick_params(labelbottom='off')
    if num not in [1,4,7] :
        plt.tick_params(labelleft='off')
 
    # Add title
    plt.title(column, loc='left', fontsize=12, fontweight=0, color=palette(num) )

# general title
plt.suptitle("How the 9 students improved\nthese past few days?", fontsize=13, fontweight=0, color='black', style='italic', y=1.02)
 
# Axis titles
plt.text(0.5, 0.02, 'Time', ha='center', va='center')
plt.text(0.06, 0.5, 'Note', ha='center', va='center', rotation='vertical')

# Show the graph
plt.show()
```plt.text(0.06, 0.5, 'Note', ha='center', va='center', rotation='vertical')

# Show the graph
plt.show()

Python科研绘图系列是一组用于科学研究和数据可视化的Python库。这些库提供了丰富的绘图功能,可以帮助研究人员和数据分析师更好地理解和展示数据。以下是几个常用的Python科研绘图库: 1. MatplotlibMatplotlibPython中最常用的绘图库之一。它提供了广泛的绘图功能,包括线图、散点图、柱状图、饼图等。Matplotlib可以创建高质量的图形,并支持自定义样式和标签。 2. SeabornSeaborn是基于Matplotlib的高级绘图库,专注于统计数据可视化。它提供了一些内置的主题和调色板,使得创建各种统计图表更加简单。Seaborn支持绘制热力图、箱线图、小提琴图等。 3. Plotly:Plotly是一个交互式绘图库,可以创建漂亮的可视化图表。它支持绘制线图、散点图、柱状图等,并且可以添加交互式元素,如缩放、平移和悬停。Plotly还提供了在线编辑器和共享平台,方便用户创建和分享可视化作品。 4. ggplot:ggplot是基于R语言中的ggplot2库开发Python绘图库。它提供了一种基于语法的绘图方式,可以轻松创建各种统计图表。ggplot具有简洁的语法和美观的默认样式,适合用于数据探索和可视化。 5. Bokeh:Bokeh是一个交互式的绘图库,专注于大规模数据集的可视化。它支持绘制线图、散点图、柱状图等,并且可以添加交互式工具,如缩放、平移和选择。Bokeh还可以将图表嵌入到Web应用程序中,实现动态更新和交互。 这些Python科研绘图库各有特点,可以根据具体需求选择适合的库进行数据可视化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地学万事屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值