前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R-Python 基础图表绘制-核密度估计图

R-Python 基础图表绘制-核密度估计图

作者头像
DataCharm
发布2021-02-22 11:59:16
5420
发布2021-02-22 11:59:16
举报

前面介绍了基础直方图的绘制教程,接下来,同样分享一篇关于数据分布的基础图表绘制-核密度估计图。具体含义我们这里就不作多解释,大家可以自行百度啊,这里我们主要讲解R-python绘制该图的方法。本期知识点主要如下:

  • R-ggplot2.geom_density()绘制方法
  • Python-seaborn.kdeplot()绘制方法
  • 各自方法的图片元素添加

R-ggplot2.geom_density()绘制方法

我们还是使用前几期绘制的数据,关注公众号DataCharm,后台回复柱形图 ,即可获取练习数据啦。这里给出部分数据的预览,如下:

这里直接给出绘图代码:

代码语言:javascript
复制
library(ggtext)
library(hrbrthemes)

flipper_density <- ggplot(data = data,aes(x = flipper_length_mm)) +
  geom_density(aes(fill=species),colour="black",size=1)+
  scale_fill_manual(values = c('#FF8C03',"#A034F1","#0F8B8B")) +
  guides(fill = guide_legend(nrow = 1)) + 
  labs(y="",
       title = "Base Charts in R Exercise 03: <span style='color:#D20F26'>Density Charts</span>",
       subtitle = "processed density charts with geom_density()",
       caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>") +
  theme_ipsum(base_family = "Roboto Condensed") +
  theme(
        plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",
                             size = 22, margin = margin(t = 1, b = 12)),
        plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
        plot.caption = element_markdown(face = 'bold',size = 12),
        #legend.position = c(.1, .1), 
        legend.position = "top",
        legend.direction = "horizontal", 
        #legend.justification = "right",
        legend.key.width = unit(1.8, "lines"), 
        legend.key.height = unit(1, "lines"),
  )

可视化结果如下:

更换主题

通过如下代码,更换成“暗黑主题”:

代码语言:javascript
复制
theme_ft_rc() +

注意:

theme_ft_rc() 和* theme_ipsum()* 都来自功能强大的hrbrthemes 绘图主题包哦,大家可以重点掌握哦。结果如下:

添加图片美化

该方法前几篇推文呢都有介绍,这里不再累赘,直接给出代码:

代码语言:javascript
复制
#读取图片
library(png)
library(grid)
img_file <- "lter_penguins.png"
img <- png::readPNG(img_file)
i1 <- grid::rasterGrob(img, interpolate = T)

flipper_density_img <- flipper_density +
    annotation_custom(i1, ymin = .045, ymax = .065, xmin = 220, xmax = 235)

效果如下:

暗黑主题的图片添加,效果如下:

Python-seaborn 绘制

还是使用集成功能强大的seaborn绘图包,我们直接给出代码:

代码语言:javascript
复制
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

fig,ax = plt.subplots(figsize=(7,4.5),dpi=200)

palette = ['#FF8C03',"#A034F1","#0F8B8B"]
sns.kdeplot(data=data,x="flipper_length_mm",hue="species",palette=palette,alpha=1,
            hue_order=["Adelie","Chinstrap","Gentoo"],fill=True,edgecolor="black",
            linewidth=2,ax=ax)

#title
ax.text(.08,1.1,"Base Charts in Python Exercise 02: Density Charts",
       transform = ax.transAxes,color='k',ha='left',va='center',size=18,fontweight='extra bold')
#subtitle
ax.text(.01,1.02,"processed bar charts with seaborn.kdeplot()",
       transform = ax.transAxes,color='k',ha='left',va='center',size=9,fontweight='bold')
#caption
ax.text(.91,-.1,'\nVisualization by DataCharm',transform = ax.transAxes,
        ha='center', va='center',fontsize = 8,color='black',fontweight='bold')

结果如下:

更换主题

通过添加如下代码完成:

代码语言:javascript
复制
plt.style.use('dark_background')

可视化效果如下:

添加图片美化

这部分是对绘图结果进行美化操作,大家可以尝试一下。直接给出添加图片的代码:

代码语言:javascript
复制
from mpl_toolkits.axes_grid1.inset_locator import inset_axes

#添加图片
aximins = inset_axes(ax,width=2,height=2,
                      bbox_to_anchor=(.1, .55, .2, .6), #[left, bottom, width, height],
                      bbox_transform=ax.transAxes)
im = aximins.imshow(image,zorder=0)
aximins.axis('off')

将以上代码加入之前的代码即可。最终的效果如下:

暗黑风格的图片添加效果如下:

总结

本期将R-ggplot2绘图和Python-seaborn 进行了汇总整理,一方面因为内容较为基础,另一方面,大家也可以对比下R-ggplot2系列 和Python-matplotlib系列绘图。大家可以根据自己喜好选择适合自己的绘图工具。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • R-ggplot2.geom_density()绘制方法
    • 更换主题
      • 添加图片美化
      • Python-seaborn 绘制
        • 更换主题
          • 添加图片美化
          • 总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档