前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python-joypy和 R-ggridges 峰峦图制作

Python-joypy和 R-ggridges 峰峦图制作

作者头像
DataCharm
发布2021-02-22 15:15:09
1.1K0
发布2021-02-22 15:15:09
举报
01. 引言

有时写较多的处理过程反倒让读者没法耐着性子读完,本期推文及以后,关于可视化的推文,我直接明了给出教程和关键步骤解释下,若想详细了解,大家可进群讨论和在文末读者讨论中进行。本期推文为峰峦图的Python和R绘制方法。

02. Python-joypy 制作

Python 制作峰峦图有直接的第三方库joypy进行绘制,该库可以直接通过pip安装。可视化代码如下:

代码语言:javascript
复制
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = ['Times New Roman']

colors = ['#791E94','#58C9B9','#519D9E','#D1B6E1']
fig,axs = joypy.joyplot(data_ed, by="source",fill=True, legend=True,alpha=.8,
                         range_style='own',xlabelsize=22,ylabelsize=22,
                         grid='both', linewidth=.8,linecolor='k', figsize=(12,6),color=colors,
                       )
ax = plt.gca()
#设置x刻度为时间形式
x = np.arange(6)
xlabel=['8-21','8-28','9-4','9-11','9-18','9-25']
ax.set_xlim(left=-.5,right=5.5)
ax.set_xticks(x)
ax.set_xticklabels(xlabel)
ax.text(.47,1.1,"Joyplot plots of media shares (TV, Online News and Google Trends)",
        transform = ax.transAxes,ha='center', va='center',fontsize = 25,color='black')
ax.text(.5,1.03,"Python Joyplot Test",
        transform = ax.transAxes,ha='center', va='center',fontsize = 15,color='black')
ax.text(.90,-.11,'\nVisualization by DataCharm',transform = ax.transAxes,
        ha='center', va='center',fontsize = 12,color='black')
plt.savefig(r'F:\DataCharm\Artist_charts_make_python_R\joyplots\Joyplot_python.png',
            width=7,height=5,dpi=900,bbox_inches='tight')

可视化结果如下:

关于 joypy库其他详细的参数设置,可以去官网(https://github.com/sbebo/joypy) 下载 Joyplot.ipynb 文件查看,最好查看所绘制数据的格式,有助于更好绘制峰峦图。

03. R-ggridges 绘制

借助于R语言丰富且强大的第三方绘图包,在应对不同类型图表时,机会都会有对应的包进行绘制。本次就使用ggridges包(https://wilkelab.org/ggridges/)进行峰峦图的绘制。官网的例子如下:

代码语言:javascript
复制
ggplot(lincoln_weather, aes(x = `Mean Temperature [F]`, y = Month, fill = stat(x))) +
  geom_density_ridges_gradient(scale = 3, rel_min_height = 0.01, gradient_lwd = 1.) +
  scale_x_continuous(expand = c(0, 0)) +
  scale_y_discrete(expand = expand_scale(mult = c(0.01, 0.25))) +
  scale_fill_viridis_c(name = "Temp. [F]", option = "C") +
  labs(
    title = 'Temperatures in Lincoln NE',
    subtitle = 'Mean temperatures (Fahrenheit) by month for 2016'
  ) +
  theme_ridges(font_size = 13, grid = TRUE) + 
  theme(axis.title.y = element_blank())

结果如下:

这里我们没有使用 geom_density_ridges_gradient()进行绘制,使用了 geom_ridgeline() 进行类似于 山脊线 图的绘制。

绘制代码如下:

代码语言:javascript
复制
library(ggthemes)
library(hrbrthemes)
plot <- ggplot(all_data, aes(x = date, y = source)) +
  geom_ridgeline(aes(height = value, fill = factor(hurricane)), size = 0.1, scale = 0.8, alpha = 0.8) +
  labs(title = "Ridgeline plots of media shares (TV, Online News and Google Trends)",
       subtitle = "ggridges ridgeline plot test",
       caption = "Visualization by DataCharm",
       y = NULL,
       x = NULL) +
  scale_x_date(expand = c(0,0)) +
  scale_fill_manual(values = c('#791E94','#58C9B9','#D1B6E1','#519D9E'),name="Hurricane")+
  theme_ipsum()+
  theme(text = element_text(family = 'Poppins',face = 'bold'),
        axis.text.y = element_text(vjust = -2))
plot

可视化结果如下:

上述所涉及到的函数都是基本,在熟悉ggpot2 绘图体系后可以轻松理解。更多有趣的可视化作品,大家可以去官网查看。

04. 总结

本期分别介绍了使用Python 和R 绘制峰峦图的结果,将主要的代码及对用结果展示出来,以便于大家快速阅读。当然,如果对此感兴趣和获取对应的数据,都可以在 读者讨论 或者加群进行交流。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 02. Python-joypy 制作
  • 03. R-ggridges 绘制
  • 04. 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档