• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      R语言

      • 首页
      • 博客
      • R语言
      • R和Python做数据可视化

      R和Python做数据可视化

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2019年3月28日
      测试开头
      R和Python做数据可视化

      R和Python使我们拥有生成复杂而有吸引力的统计图形的能力,以便获得洞察力和探索我们的数据。两者都具备良好的处理数百万数据点的能力(根据平台的不同可能有数十亿)。

      用Python可视化数据

      Seaborn构建在Matplotlib之上,与Matplotlib相比,Seaborn具有相对简单的语法和结构。

      首先,我们使用import seaborn as sns; sns.set()来加载和设置默认为Python会话的seaborn主题。Matplotlib也必须加载,因为这两个库是同时使用的。

      import seaborn as sns
      sns.set()
      import matplotlib.pyplot as plt
      1. set_style()设置图形的背景主题。“ticks”是最接近R的画图。

      2. set_context()将对图形应用预定义的格式,以适应使用可视化的原因或上下文。font_scale=1用于设置图中所有文本的字体大小。

      3. plt.figure()是一个控制matpltlib图的不同方面的命令(如前所述,seaborn图只是隐藏在幕后的Matplotlib图)。

      4. sns.scatterplot()是用于传递参数以创建seaborn样式的scatterplot的命令。

      • x=”wt”将权重映射到x轴。

      • y=”hp”将horsepower映射到y轴。

      • hue=”cyl”将填充和着色散点。

      • palette =[‘red’,’green’,’blue’]手动覆盖由hue 设定的red, green和blue调色板。

      • data=”mtcars”允许我们使用数据集中的数据。

      • style=’cyl’为每个cyinder类别分配形状。

      • legend =’brief’将指定hue&size。

      1. size =(800,1000)控制图上散点的最小和最大尺寸。

      2. plt.title()给出了图片的主标题。如果您是一个经验丰富的Matplotlib用户或使用过plt.suptitle(),那么在您知道将这两者一起使用时的混淆之前。

      3. plt.xlabel()将格式化x轴标签。我使用set_ . .要访问该类以包含美学属性。这有时会很混乱,但是有很多方法可以格式化seaborn/matplotlib图。这对于创建好图之后非常有用。图形已经用sns制作好了。scatterplot现在需要以这种方式覆盖默认格式。

      4. 对于y轴,pl .ylabel()以完全相同的方式工作。

      #sns.set_style("darkgrid")
          sns.set_style("ticks")
          sns.set_context("talk")
          #sns.set_context("notebook", font_scale=1)
          plt.figure(figsize=(10,8)) #plt.figure(figsize=(width,height))
          sns.scatterplot(x="wt", y="hp", hue='cyl', palette=['red','green','blue'],
                          data=mtcars, style='cyl', legend='brief', sizes=(800,1000)
                         )
          plt.title('Motor Trend Car Road Tests of 1973-74 Models', fontsize=24, fontweight='bold')
          plt.xlabel("Weigt (1000lbs)").set_fontsize('22')
          plt.xlabel("Weigt (1000lbs)").set_fontweight("bold")
          plt.ylabel("Gross Horsepower").set_fontsize('22')
          plt.ylabel("Gross Horsepower").set_fontweight("bold");
      R和Python做数据可视化

      正如我们所看到的,这个图与ggplot2中生成的图类似。Seaborn是Matplotlib的一个更简单的替代方案。

      对于Seaborn需要创建一个新的图片。有很多方法可以做到这一点,而sns.relplot()就是其中之一。

      1. sns.set()将把默认的Seaborn主题设置到Python环境中,它还可以用来覆盖默认参数,正如我们看到的rc={‘figure.figsize’:(20,20)}。

      2. sns.relplot()有许多与上面讨论的相同的参数,在这里我们将讨论新的参数,因为这个图是分面的。

      • col=”gear”指定mtcars数据集中用于面化的列。

      • col_wrap=3指定了图的位置。在本例中,图将被放置在3列中。它将在一行中,因为没有指定行数。

      • aspect=0.6是对绘图大小的控制。我建议阅读关于这方面的文档,因为在这一点上解释起来可能会很混乱。

      1. g.fig.suptitle()为图形创建标题。

      • position=(0.5,1.05)是一个有趣的参数,因为它控制标题的位置。即使是很小的改变也能极大地改变标题的位置。

      1. g。set_xlabels & g。set_ytags将像前面讨论的那样工作。

      sns.set(rc={'figure.figsize':(20,20)})
        sns.set_style("ticks")
        sns.set_context("talk")

        g = sns.relplot(x="wt", y="hp", hue='cyl', palette=['red','green','blue'],
                        data=mtcars, col='gear', col_wrap=3,
                        height=6, aspect=0.6, style='cyl', sizes=(800,1000))

        g.fig.suptitle('Motor Trend Car Road Tests of 1973-74 Models' ,position=(0.5,1.05), fontweight='bold', size=18)
        g.set_xlabels("Weigt (1000lbs)",fontweight='bold', size=20)
        g.set_ylabels("Gross Horsepower",fontweight='bold', size=20);
      R和Python做数据可视化

      用R可视化数据

      使用ggplot2,我们可以通过向图片添加美学层来创建简单且可定制的图形。对于新用户来说,一个很好的特性是除了加载ggplot2中使用的数据并给出几何形状之外,还可以(大多数情况下)以任何顺序完成美学层。这是因为ggplot2是基于图形语法的原则构建的。这些原则使我们能够创建惊奇的和富含信息的可视化。

      下面的R代码将加载ggplot2包(可能是R中最突出的可视化包),并为我们生成散点图。

      1. ggplot(mtcars, aes(x=wt, y=hp))将加载ggplot2中使用的mtcars数据集,aes(x=wt, y=hp)将映射我们的图的美学,x美学为wt为x轴,y美学为hp为y轴。

      2. geom_point(size=1,aes(color=cyl, shape=cyl, fill=cyl))将生成前面提到的预定义美学和新的美学的散点图。color=cyl将根据cyl的数量为散射点的轮廓提供一种独特的颜色。shape=cyl将为散点提供一个独特的形状,并与颜色协同工作。fill=cyl将使用cyl填充散点,而不仅仅是轮廓线。最好是使用颜色和填充在一起(如果你仔细观察,会发现有一个很小的审美差异)。

      3. heme_bw()在ggplot2中为我们提供了一个预先生成的主题。然后可以使用正确的命令轻松地调整它。ggplot2具有用于此任务的简单且易于学习的语法,而且易于操作。

      4. theme()命令允许您更改第3点中已经设置的任何主题的默认设置(还可以使用它更改图形的其他美学)。

      • axis.text=element_text(face=’bold’, size=7格式化y轴和x轴的文本(轴上的数字)。face=’bold’将文本加粗,size=”7″将其大小增加到指定的大小。

      • axis.title=element_text(face=’bold’, size=10)的工作原理与上面的命令相同,但只适用于axis标题。

      • axis.ticks=element_line(size=0.5)将使图上的刻度更明显

      • panel.background=element_rect(color = NA)是我决定添加的一个美学度量,它去掉了图形周围的矩形边框

      • plot.title=element_text(face=’粗体’,size=11,hjust = 0.5))只需粗体显示并更改主标题的大小。hjust=0.5将标题居中对齐

      • scale_color_manual(break =c(” 4″, “6”, “8”), values=c(“red”, “green”, “blue”))将覆盖默认的配色方案,并将红色添加到’4’,绿色添加到’6’,蓝色添加到’8’。这将手动覆盖散点的轮廓颜色

      • scale_fill_manual(break =c(” 4″, “6”, “8”), values=c(“red”, “green”, “blue”))将执行与上面相同的操作,但这次是针对散点的内部。

      • scale_y_continuous(break = seq(0,350,50))手动覆盖y轴上的数字,从0开始,350结束,以50为增量。这将显示在主要刻度。

      • scale_x_continuous(break =seq(1.5、5.5、0.5),minor_break =seq(1.5、5.5、1))对x轴执行与上面相同的操作,并手动覆盖较小的刻度,但是这并不明显。

      • scale_shape_manual(值=c(21,4,22))将定义给每个cylinders类别的形状类型。

      1. options(repr.plot.width=4, repr.plot.height=3)当您想要操纵图形的宽度和高度时,这是一个方便的命令。它在Jupyter特别有用。

       library(ggplot2)
        options(repr.plot.width=4, repr.plot.height=3)
           p <- ggplot(mtcars, aes(x=wt, y=hp)) +
                geom_point(size=1,aes(color=cyl, shape=cyl, fill=cyl)) +
                labs(title='Motor Trend Car Road Tests of 1973-74 Models') +
                xlab("Weigt (1000lbs)") +
                ylab("Gross Horsepower") +
                theme_bw() +
                theme(axis.text=element_text(face='bold',
                size=7),
                axis.title=element_text(face='bold',
                size=10),
                axis.ticks=element_line(size=0.5),
                panel.background=element_rect(colour = NA),
                plot.title=element_text(face='bold', size=11,hjust = 0.5)) +
                scale_color_manual(breaks = c("4", "6", "8"), values=c("red", "green", "blue"))+
                scale_fill_manual(breaks = c("4", "6", "8"), values=c("red", "green", "blue"))+
                scale_y_continuous(breaks = seq(0,350,50)) +
                scale_x_continuous(breaks = seq(1.5,5.5,0.5), minor_breaks=seq(1.5,5.5,1)) +
                scale_shape_manual(values=c(21,4,22))
                p
      R和Python做数据可视化

      ggplot2的另一个重要方面是它能够对数据进行分面处理,从而在一行代码中创建多个图。

      1. facet_grid(~gear) 将数据以gears的数量划分,创建许多具有相同主题美学的相同情节。

      options(repr.plot.width=7, repr.plot.height=4)
        p + facet_grid(~gear)
      R和Python做数据可视化

      结论

      我认为主要的区别之一是,与ggplot2图形相比,Seaborn图具有更好的分辨率,并且所需的语法可以少得多(但这取决于环境)。Seaborn使用编程方法,用户可以访问Seaborn和Matplotlib中的类来操纵这些图。ggplot2使用分层的方法,用户可以按照创建图形的任何顺序添加美学和格式(我相信,尽管需要大量代码,但可以更简单)。大多数人都没有注意到,这一点对某些人可能比其他人更重要,当以图形形式保存Python绘图时,它会比R生成的图形占用更多的磁盘空间。在本文的图形中,Seaborn/Matplotlib图形比ggplot2图形占用大约6倍的磁盘空间。
      使用Seaborn和ggplot2非常有可能重新创建相同的图形(尽管略有不同)。虽然工具不同,但它们仍然可以用来创建相同的对象。

      作者:Asel Mendis
      原文链接:
      https://www.kdnuggets.com/2019/03/r-vs-python-data-visualization.html

      数据人才(ID:datarencai)

      (一个帮助数据人才找工作的公众号,

      也分享数据人才学习和生活的有趣事情。)

      R和Python做数据可视化

      内容推荐


      • R中你应该学习的7种可视化

      • R的ggplot2包画折线图?

      • R的ggplot2包画柱状图?

      • 如何阅读论文?

      • 论文管理工具,我用Zotero

      • 一个数据人的2018


      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      R语言做数据挖掘教程
      2019年3月28日

      下一篇文章

      再来看看R中的数据类型
      2019年3月29日

      你可能也喜欢

      3-1665801675
      R语言学习:重读《R数据科学(中文版)》书籍
      28 9月, 2022
      6-1652833487
      经典铁死亡,再出新思路
      16 5月, 2022
      1-1651501980
      R语言学习:阅读《R For Everyone 》(第二版)
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?