首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >树状图ggplot2 R上具有梯度的不同颜色

树状图ggplot2 R上具有梯度的不同颜色
EN

Stack Overflow用户
提问于 2018-05-03 12:06:08
回答 2查看 6.5K关注 0票数 8

我有一个树状图(如下所示)。我唯一想做的改变是将子组(图中的年份)的颜色更改为不同的颜色,而不是所有的蓝色。这有可能吗?

样本数据帧

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PL <- c(rep("PL1", 4), repl("PL2", 4), rep("PL3", 4), rep("PL4", 4))
CNT <- sample(seq(1:50), 16)
YEAR <- rep(c("2015", "2016", "2017", "2018"), 4)

df <- data.frame(PL, YEAR, CNT)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PL <- c(rep("PL1", 4), repl("PL2", 4), rep("PL3", 4), rep("PL4", 4))
    CNT <- sample(seq(1:50), 16)
    YEAR <- rep(c("2015", "2016", "2017", "2018"), 4)

    df <- data.frame(PL, YEAR, CNT)

    # plot
library(ggplot2)
library(treemapify)
treeMapPlot <- ggplot(df, aes(area = CNT,
                              fill = CNT,
                              label=PL, 
                              subgroup=YEAR)) +
      geom_treemap() +
      geom_treemap_subgroup_border(colour = "white") +
      geom_treemap_text(fontface = "italic",
                        colour = "white",
                        place = "centre",
                        grow = F,
                        reflow = T) +
      geom_treemap_subgroup_text(place = "centre",
                                 grow = T,
                                 alpha = 0.5,
                                 colour = "#FAFAFA",
                                 min.size = 0)

treeMapPlot

如果我改变了fillaes,我可以得到这个,但我失去了梯度。我需要保留这些颜色,但是显示渐变颜色,意味着小的CNT更轻,更大的CNT更深。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
treeMapPlot <- ggplot(df, aes(area = CNT,
                              fill = YEAR,
                              label = PL, 
                              subgroup = YEAR))

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-03 12:34:17

这不是最美丽的解决方案,但映射计数到阿尔法模拟的每种颜色的光到暗的梯度。在aes(alpha = CNT)中添加geom_treemap,并根据需要缩放alpha。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggplot2)
library(treemapify)

PL <- c(rep("PL1",4),rep("PL2",4),rep("PL3",4),rep("PL4",4))
CNT <- sample(seq(1:50),16)
YEAR <- rep(c("2015","2016","2017","2018"),4)

df <- data.frame(PL,YEAR,CNT)

ggplot(df, aes(area = CNT, fill = YEAR, label=PL, subgroup=YEAR)) +

# change this line
    geom_treemap(aes(alpha = CNT)) +
    geom_treemap_subgroup_border(colour="white") +
    geom_treemap_text(fontface = "italic",
                                        colour = "white",
                                        place = "centre",
                                        grow = F,
                                        reflow=T) +
    geom_treemap_subgroup_text(place = "centre",
                                                         grow = T,
                                                         alpha = 0.5,
                                                         colour = "#FAFAFA",
                                                         min.size = 0) +
    scale_alpha_continuous(range = c(0.2, 1))

reprex封装创建于2018-05-03 (v0.2.0)。

编辑添加:基于这个职位通过在一个更深的填充层的顶部放置一个α缩放层来入侵假梯度。这里我使用了两个geom_treemap,一个带有fill = "black",另一个带有alpha缩放。仍有一些有待改进的地方。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggplot(df, aes(area = CNT, fill = YEAR, label=PL, subgroup=YEAR)) +
    geom_treemap(fill = "black") +
    geom_treemap(aes(alpha = CNT)) +
    geom_treemap_subgroup_border(colour="white") +
    geom_treemap_text(fontface = "italic",
                                        colour = "white",
                                        place = "centre",
                                        grow = F,
                                        reflow=T) +
    geom_treemap_subgroup_text(place = "centre",
                                                         grow = T,
                                                         alpha = 0.5,
                                                         colour = "#FAFAFA",
                                                         min.size = 0) +
    scale_alpha_continuous(range = c(0.4, 1))

reprex封装创建于2018-05-03 (v0.2.0)。

票数 6
EN

Stack Overflow用户

发布于 2018-05-03 15:00:56

一种选择是分别计算每个单元格的颜色,然后直接绘制它们。这不能给你一个传奇,但可以说,一个传奇并不是那么有用。(你需要4个不同的传说,如果需要的话,可以将它们添加到情节中。)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggplot2)
library(treemapify)

set.seed(342)
PL <- c(rep("PL1", 4), rep("PL2", 4), rep("PL3", 4), rep("PL4", 4))
CNT <- sample(seq(1:50), 16)
YEAR <- rep(c("2015", "2016", "2017", "2018"), 4)

df <- data.frame(PL, YEAR, CNT)

# code to add colors to data frame follows
# first the additional packages needed
library(dplyr)
library(colorspace)  # install via: install.packages("colorspace", repos = "http://R-Forge.R-project.org")
library(scales)

# I'll use 4 palettes from the colorspace package, one for each year
palette <- rep(c("Teal", "Red-Yellow", "Greens", "Purples"), 4)

# We add the palette names and then calculate the colors for each
# data point. Two notes:
#  - we scale the colors to the maximum CNT in each year
#  - we're calculating 6 colors but use only 5 to make the gradient;
#    this removes the lightest color
df2 <- mutate(df,
              palette = palette) %>%
  group_by(palette) %>%
  mutate(
    max_CNT = max(CNT),
    color = gradient_n_pal(sequential_hcl(6, palette = palette)[1:5])(CNT/max_CNT))


ggplot(df2, aes(area = CNT, fill = color, label=PL, subgroup=YEAR)) +
  geom_treemap() +
  geom_treemap_subgroup_border(colour="white") +
  geom_treemap_text(fontface = "italic",
                    colour = "white",
                    place = "centre",
                    grow = F,
                    reflow=T) +
  geom_treemap_subgroup_text(place = "centre",
                             grow = T,
                             alpha = 0.5,
                             colour = "#FAFAFA",
                             min.size = 0) +
  scale_fill_identity()

如果不提前知道会出现多少种情况,也可以动态生成色标:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggplot2)
library(treemapify)

set.seed(341)
PL <- c(rep("PL1", 6), rep("PL2", 6), rep("PL3", 6), rep("PL4", 6))
CNT <- sample(seq(1:50), 24)
YEAR <- rep(c("2013", "2014", "2015", "2016", "2017", "2018"), 4)

df <- data.frame(PL, YEAR, CNT)

# code to add colors to data frame follows
# first the additional packages needed
library(dplyr)
library(colorspace)  # install via: install.packages("colorspace", repos = "http://R-Forge.R-project.org")
library(scales)

# number of palettes needed
n <- length(unique(YEAR))

# now calculate the colors for each data point
df2 <- df %>%
  mutate(index = as.numeric(factor(YEAR))- 1) %>%
  group_by(index) %>%
  mutate(
    max_CNT = max(CNT),
    color = gradient_n_pal(
      sequential_hcl(
        6,
        h = 360 * index[1]/n,
        c = c(45, 20),
        l = c(30, 80),
        power = .5)
      )(CNT/max_CNT)
    )

ggplot(df2, aes(area = CNT, fill = color, label=PL, subgroup=YEAR)) +
  geom_treemap() +
  geom_treemap_subgroup_border(colour="white") +
  geom_treemap_text(fontface = "italic",
                    colour = "white",
                    place = "centre",
                    grow = F,
                    reflow=T) +
  geom_treemap_subgroup_text(place = "centre",
                             grow = T,
                             alpha = 0.5,
                             colour = "#FAFAFA",
                             min.size = 0) +
  scale_fill_identity()

最后,您可以手动定义色标的颜色:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggplot2)
library(treemapify)

set.seed(341)
PL <- c(rep("PL1", 6), rep("PL2", 6), rep("PL3", 6), rep("PL4", 6))
CNT <- sample(seq(1:50), 24)
YEAR <- rep(c("2013", "2014", "2015", "2016", "2017", "2018"), 4)

df <- data.frame(PL, YEAR, CNT)

# code to add colors to data frame follows
# first the additional packages needed
library(dplyr)
library(colorspace)  # install via: install.packages("colorspace", repos = "http://R-Forge.R-project.org")
library(scales)

# each color scale is defined by a hue, a number between 0 and 360
hues <- c(300, 50, 250, 100, 200, 150)

# now calculate the colors for each data point
df2 <- df %>%
  mutate(index = as.numeric(factor(YEAR))) %>%
  group_by(index) %>%
  mutate(
    max_CNT = max(CNT),
    color = gradient_n_pal(
      sequential_hcl(
        6,
        h = hues[index[1]],
        c = c(45, 20),
        l = c(30, 80),
        power = .5)
    )(CNT/max_CNT)
  )

ggplot(df2, aes(area = CNT, fill = color, label=PL, subgroup=YEAR)) +
  geom_treemap() +
  geom_treemap_subgroup_border(colour="white") +
  geom_treemap_text(fontface = "italic",
                    colour = "white",
                    place = "centre",
                    grow = F,
                    reflow=T) +
  geom_treemap_subgroup_text(place = "centre",
                             grow = T,
                             alpha = 0.5,
                             colour = "#FAFAFA",
                             min.size = 0) +
  scale_fill_identity()

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50163072

复制
相关文章
Python中的编码
Python处理字符串,写文件时会碰到许多的编码问题,特别是涉及到中文的时候,非常烦人,但又不得不学。下面主要记录工作过程中碰到的Python编码问题。 1. 字符串编码 Python的字符串类型为s
Tyan
2017/12/29
1K0
Python中的编码问题
视频汇总首页:http://edu.51cto.com/lecturer/index/user_id-4626073.html
py3study
2020/01/06
2K0
python中的编码问题
在python2.x中,有两种数据类型,unicode和str,这两个都是basestring的子类
py3study
2020/01/05
1.4K0
Python3 中文在URL中的编码解码
一些url的编码问题,在浏览器提交请求api时,如果url中包含汉子或者空格这类符号,就会被自动编码掉。呈现的结果是 ==> %xx%xx%xx。如果出现3个百分号为一个原字符则为utf8编码,如果2个百分号则为gb2312编码。下面为大家演示编码和解码的代码。
十四君
2019/11/27
1.5K0
python爬虫小知识,中文在url中的编码解码
有时候我们做爬虫经常会遇到这种编码格式,大概的样式为 %xx%xx%xx,对于这部分编码,python提供了一个quote的方法来编码,对应的解码为unquote方法。
云飞
2018/09/11
1.6K0
python爬虫小知识,中文在url中的编码解码
有时候我们做爬虫经常会遇到这种编码格式,大概的样式为 %xx%xx%xx,对于这部分编码,python提供了一个quote的方法来编码,对应的解码为unquote方法。
云飞
2018/09/02
2.4K0
python爬虫小知识,中文在url中的编码解码
python中的编码与解码
编码/解码本质上是一种映射(对应关系),比如‘a’用ascii编码则是65,计算机中存储的就是00110101,但是显示的时候不能显示00110101,还是要显示'a',但计算机怎么知道00110101是'a'呢,这就需要解码,当选择用ascii解码时,当计算机读到00110101时就到对应的ascii表里一查发现是'a',就显示为'a'
李拜六不开鑫
2018/09/04
1.3K0
python中的编码与解码
python中烦人的编码问题
mysql数据中都是UTF编码,导出到文件称csv还是xls都是utf-8,用python的pandas读取可以,但每次写代码的时候都需要很小心看文件原来是什么编码
机械视角
2019/10/23
7910
Python 中的 Elias Delta 编码
首先,在为 Elias Delta 编码编写代码之前,我们将实现 Elias delta 编码。
海拥
2021/12/20
6630
hanlp在Python环境中的安装失败后的解决方法
Hanlp是由一系列模型与算法组成的javag工具包,目标是普及自然语言处理再生环境中的应用。有很多人在安装hanlp的时候会遇到安装失败的情况,下面就是某大神的分享的在python环境中安装失败的解决方法,大家可以借鉴学习以下!
IT小白龙
2018/12/19
2.1K0
hanlp在Python环境中的安装失败后的解决方法
位置编码在注意机制中的作用
A. Vaswani等人的《Attention Is All You Need》被认为是解决了众所周知的LSTM/RNN体系结构在深度学习空间中的局限性的突破之一。本文介绍了transformers 在seq2seq任务中的应用。该论文巧妙地利用了 D.Bahdanau 等人通过联合学习对齐和翻译的神经机器翻译注意机制的使用。并且提供一些示例明确且详尽地解释了注意力机制的数学和应用。
zenRRan
2021/06/17
2K0
Python中编码问题(UnicodeDecodeError)的处理
之前也遇到过,但是没有深入的去了解和测试,今天借此问题,对python的编码问题做个详细的学习;首先说明一点的是,目前公司的开发环境是Python 2.7;
SEian.G
2021/03/18
3.8K0
浅谈 Python 2 中的编码问题
Python 2.x 里的编码实在是一件令人烦躁的事情。不断有初学者被此问题搞得晕头转向。我自己也在很长一段时间内深受其害,直到现在也仍会在开发中偶尔被坑。在本教室的提问和讨论中,编码问题也占据了相当大的比重。 然而这个问题并不能一两句话轻易解答。今天在这里稍微分析一下,希望能帮各位理清这里面的问题。 要弄清编码问题,首先明确几个概念: str、unicode、encode、decode str 就是我们通常说的字符串,在 python 中是由引号包围的一串字符。但是 Python 中的默认字符并不包括中文
Crossin先生
2018/04/17
1K0
机器学习在HEVC 视频编码中的实践
张宏顺
2017/03/31
4.1K1
机器学习在HEVC 视频编码中的实践
在vscode中go编码发生的问题整理
使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理。
happlyfox
2021/03/19
1.6K0
在iis中如何设置站点的编码格式?
二、步骤        打开iis,选择一个站点,在右侧的asp.net区域里,找到‘.NET全球化’项。
习惯说一说
2019/08/08
7.1K0
在iis中如何设置站点的编码格式?
在vscode中go编码发生的问题整理
使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理。
happlyfox
2021/03/17
2.4K0
base64编码在silverlight中的使用
在传统的.net应用中,使用base64编码字符串是一件很轻松的事情,比如下面这段代码演示了如何将本地文件转化为base64字符串,并且将base64字符串又还原为图片文件. base64编码在传统.net程序中的应用(by 菩提树下的杨过 ) using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; namespace Base64Study { /// <summary> /// bas
菩提树下的杨过
2018/01/23
1.3K0
base64编码在silverlight中的使用
机器学习在HEVC 视频编码中的实践
背景与目标 当前视频编码中应用最广泛的是AVC(H.264),而HEVC(H.265)作为下一代的视频编码算法,在压缩性能上可以再节省40%的码率,优势很明显,但H.265对转码机器性能要求较高,实时编码场景时,其高压缩性能不能被充分利用。在x265中有ultrafast、veryfast、fast、medium、slow、slower、veryslow等配置,其中,veryslow对应复杂度最高,压缩性能也最好,不同CPU配置下,对1080p视频测试,编码速度如下表: 由上可见,对于1080p视频的
腾讯技术工程官方号
2018/01/30
1.2K0
机器学习在HEVC 视频编码中的实践
点击加载更多

相似问题

在ns3中声明GnuplotHelper失败

239

Python中的Nominatim地理编码在SettingWithCopyWarning中失败

12

在Ns3中声明节点

112

PEM编码中ECC私钥的Python导入失败

18

ns3 buffer.h断言失败

15
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文