如何在R ggplot中更改geom_text中的文本长度?

时间:2018-11-23 08:46:57

标签: r ggplot2 plot geom-text

我正在使用R中import { Component, OnInit } from '@angular/core'; ... import { AngularFireAuth } from 'angularfire2/auth'; ... @Component({...}) export class UserDetailsComponent implements OnInit { constructor(...public afAuth: AngularFireAuth,...) { } ngOnInit() { this.afAuth.authState.subscribe(user => { if(user) { console.log('User Details: ', user); } else { console.log('No user logged in as of now'); } }) } ... } 中的geom_label来绘制一些文本,但是我不知道如何根据变量来改变文本的大小。请注意,“大小”不是指文本的宽度,而是其长度。考虑以下虚拟数据及其生成的数字:

ggplot

enter image description here

在上面的图中,我能够绘制位于x.cord(即x坐标)上的文本,但我也希望文本的长度等于duration变量。

如果我按如下方式使用size参数:

x.cord <- c(4,5,1,6)
duration <- c(0.4, 0.7, 0.2, 0.3)
text <- c("know", "boy", "man", "gift")

df <- data.frame(cbind(x.cord, duration, text))


p <- ggplot(df, aes(x.cord, rownames(df), label = text))

p + geom_label(aes(fill=text))

我得到下图: enter image description here

我能够根据持续时间变量来控制文本的“宽度”,如上图所示,但是我似乎找不到任何可以帮助我控制文本框“长度”的参数。有什么建议我该怎么做?

1 个答案:

答案 0 :(得分:4)

这不是最优雅的解决方案,但是我不确定100%会追随您。我认为这也是EcologyTom的想法。也许是这样的吗?

x.cord <- c(4,5,1,6)
duration <- c(0.4, 0.7, 0.2, 0.3)
text <- c("know", "boy", "man", "gift")
df <- data.frame(cbind(as.numeric(x.cord), as.numeric(duration), text))

p = ggplot(df, aes(x.cord, as.numeric(rownames(df)), label = text)) +
  geom_tile(aes(x = x.cord, y = as.numeric(rownames(df)), width = duration, height = 0.1, fill = text)) +
  geom_text()
p

enter image description here