相关疑难解决方法(0)

自定义具有不同颜色的ggplot2轴标签

我有一个基本的条形图,我是从ggplot2创建的.y变量包含正值和负值,大约一半的矢量值为负值.我想自定义轴标签,以便当相应的x因子的y值为负时,其标签为红色.这是一个可重复的例子:

#Create data
x <- c("a","b","c","d","e","f")
y <- c("10", "9","-10","11","-3","-15")
data <- data.frame(x, y)
data$y <- as.numeric(as.character(data$y))

data$category <- ifelse(as.numeric(data$y)<0, 0, 1)
data$category <- as.factor(data$category)

#Graph
library(cowplot) #theme
library(ggplot2)

ggplot(data, aes(x=x, y=y)) + 
  geom_bar(stat = "identity", aes(fill=category)) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  theme(axis.text.x = element_text(colour = "black"))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我需要的是一种将"c","e"和"f"的标签颜色更改为我选择的颜色的方法.我试过切换,theme(aes(axis.text.x=element_text(colour=Air_pricier)))但这产生了一个错误.提前致谢.

r ggplot2 geom-bar

32
推荐指数
3
解决办法
2万
查看次数

对于ggplot图,如何在单个轴内获得具有不同颜色的轴刻度标签?

考虑一个简单的ggplot2图

library(ggplot2) 
dat <- data.frame(name=c("apple", "orange", "plum"),value=c(3,8,2),outlier=c(FALSE,TRUE,FALSE))
ggplot(dat)+geom_point(aes(x=value,y=name))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有没有办法有条件地修改轴y标签(比如颜色)的样式属性,例如取决于outlierdat

结果就像是

在此输入图像描述

在具有大量项目的图形上,此功能将极大地提高图形可读性和影响力.

r ggplot2

12
推荐指数
1
解决办法
3823
查看次数

在ggplot2中动态格式化各个轴标签

这可能最终成为一个expression或一个call问题,但我试图有条件地格式化单个轴标签.

在下面的示例中,我想有选择地加粗其中一个轴标签:

library(ggplot2)

data <- data.frame(labs = c("Oranges", "Apples", "Cucumbers"), counts = c(5, 10, 12))

ggplot(data = data) + 
  geom_bar(aes(x = labs, y = counts), stat="identity")`
Run Code Online (Sandbox Code Playgroud)

没有结合

有类似的问题在这里,但解决方案涉及themeelement_text.我试图直接使用轴标签.

我可以手动执行此操作,如下所示:

breaks <- levels(data$labs)
labels <- breaks
labels[2] <- expression(bold("Cucumbers"))

ggplot(data = data) + 
  geom_bar(aes(x = labs, y = counts), stat="identity") + 
  scale_x_discrete(label = labels, breaks = breaks)
Run Code Online (Sandbox Code Playgroud)

粗体

但是,如果我尝试通过索引而不是输入"Cucumbers"来做到这一点,我会收到以下错误:

breaks <- levels(data$labs)
labels <- breaks
labels[2] <- expression(bold(labels[2]))

ggplot(data = data) + 
  geom_bar(aes(x …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

9
推荐指数
1
解决办法
2088
查看次数

ggplot2:在刻面图上着色轴文本

scales参数设置为时,我似乎无法在刻面图上正确地着色轴文本"free".请考虑以下数据集:

library( ggplot2 )
X <- data.frame( V1 = LETTERS, V2 = runif( 26 ),
    V3 = rep( c("F1", "F2"), each = 13 ) )
Run Code Online (Sandbox Code Playgroud)

我们可以在单个面上绘制数据,突出显示字母D,O,T,如下所示:

v <- ifelse( X$V1 %in% c( "D", "O", "T" ), "red", "black" )
g <- ggplot( X, aes( x = V1, y = V2 ) ) + geom_point() +
    theme( axis.text.x = element_text( color = v ) )
Run Code Online (Sandbox Code Playgroud)

使用默认值scales = "fixed"正确地绘制切面图会突出显示两个面上的D,O,T.

g + facet_wrap( ~V3 )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,切换scales …

r ggplot2 facet-wrap

9
推荐指数
2
解决办法
833
查看次数

使用ggplot2使每个第N轴标签变粗

是否可以使用ggplot2使轴上的每个第N个刻度变粗?我只想让轴刻度为粗体(小线),而不是文本.

这对于在绘图中显示每日数据时突出显示每7个刻度非常有用.我想保留每天的刻度线.

我无法找到关于这个主题的任何内容,任何帮助将不胜感激!

编辑:这是一个代码示例.我在最后一行扩展它以增加所有刻度的大小.我想要的是让每个第N个标签更大.例如每7日.由于我正在处理每天都在变化的数据,因此手动定义每个第7个都不起作用.

library(ggplot2)
library(lubridate)
theme_set(theme_bw())

df <- economics_long[economics_long$variable %in% c("psavert", "uempmed"), ]
df <- df[lubridate::year(df$date) %in% c(1967:1981), ]

# labels and breaks for X axis text
brks <- df$date[seq(1, length(df$date), 12)]
lbls <- lubridate::year(brks)

# plot
ggplot(df, aes(x=date)) + 
  geom_line(aes(y=value, col=variable)) + 
  labs(title="Time Series of Returns Percentage", 
       subtitle="Drawn from Long Data format", 
       caption="Source: Economics", 
       y="Returns %", 
       color=NULL) +  # title and caption
  scale_x_date(labels = lbls, breaks = brks) +  # change to monthly ticks and labels
  scale_color_manual(labels …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

6
推荐指数
1
解决办法
860
查看次数

标签 统计

ggplot2 ×5

r ×5

facet-wrap ×1

geom-bar ×1