标签: ggplot2

在ggplot2中更改轴文本的字体大小和方向

我正在绘制一个图表,其中x轴为分类变量,y轴为数值变量.

对于x轴,假设有许多数据点,则默认文本格式会使每个刻度线的标签与其他标签重叠.我如何(a)更改轴文本的字体大小和(b)更改文本的方向,使文本垂直于轴?

r ggplot2

168
推荐指数
6
解决办法
39万
查看次数

在分类变量图表中显示%而不是计数

我正在绘制一个分类变量,而不是显示每个类别值的计数.

我正在寻找一种方法来ggplot显示该类别中的值的百分比.当然,有可能用计算的百分比创建另一个变量并绘制一个变量,但我必须做几十次,我希望在一个命令中实现它.

我正在尝试类似的东西

qplot(mydataf) +
  stat_bin(aes(n = nrow(mydataf), y = ..count../n)) +
  scale_y_continuous(formatter = "percent")
Run Code Online (Sandbox Code Playgroud)

但我必须错误地使用它,因为我有错误.

为了轻松重现设置,这里有一个简化的例子:

mydata <- c ("aa", "bb", NULL, "bb", "cc", "aa", "aa", "aa", "ee", NULL, "cc");
mydataf <- factor(mydata);
qplot (mydataf); #this shows the count, I'm looking to see % displayed.
Run Code Online (Sandbox Code Playgroud)

在实际情况中,我可能会使用ggplot而不是qplot,但使用stat_bin的正确方法仍然无法使用.

我也试过这四种方法:

ggplot(mydataf, aes(y = (..count..)/sum(..count..))) + 
  scale_y_continuous(formatter = 'percent');

ggplot(mydataf, aes(y = (..count..)/sum(..count..))) + 
  scale_y_continuous(formatter = 'percent') + geom_bar();

ggplot(mydataf, aes(x = levels(mydataf), y = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

160
推荐指数
9
解决办法
20万
查看次数

如何为ggplot2中具有稳定映射的分类变量赋值?

我在上个月一直在加快速度.

这是我的问题:

将颜色分配给ggplot2中具有稳定映射的分类变量的好方法是什么?我需要在一组图表中具有一致的颜色,这些图表具有不同的子集和不同数量的分类变量.

例如,

plot1 <- ggplot(data, aes(xData, yData,color=categoricaldData)) + geom_line()
Run Code Online (Sandbox Code Playgroud)

哪里categoricalData有5个级别.

然后

plot2 <- ggplot(data.subset, aes(xData.subset, yData.subset, 
                                 color=categoricaldData.subset)) + geom_line()
Run Code Online (Sandbox Code Playgroud)

哪里categoricalData.subset有3个级别.

但是,两组中的特定级别将以不同的颜色结束,这使得更难以一起阅读图形.

我是否需要在数据框中创建颜色矢量?或者是否有另一种方法可以为类别指定特定颜色?

r ggplot2

159
推荐指数
5
解决办法
18万
查看次数

在geom_point中标记点

我正在玩的数据来自下面列出的互联网资源

nba <- read.csv("http://datasets.flowingdata.com/ppg2008.csv", sep=",")
Run Code Online (Sandbox Code Playgroud)

我想要做的是创建一个2D点图,比较该表中的两个指标,每个玩家在图上表示一个点.我有以下代码:

nbaplot <- ggplot(nba, aes(x= MIN, y= PTS, colour="green", label=Name)) + 
                  geom_point() 
Run Code Online (Sandbox Code Playgroud)

这给了我以下内容:

NBA情节

我想要的是一个玩家名字的标签就在点旁边.我认为ggplot美学中的标签功能会为我做这个,但事实并非如此.

我也尝试过text()函数和textxy()函数library(calibrate),它们似乎都不适用于ggplot.

如何为这些点添加名称标签?

plot r ggplot2 labeling ggrepel

153
推荐指数
3
解决办法
23万
查看次数

ggplot2折线图给出了"geom_path:每组只包含一个观察.你需要调整群体美感吗?"

使用此数据框("df"):

year pollution
1 1999 346.82000
2 2002 134.30882
3 2005 130.43038
4 2008  88.27546
Run Code Online (Sandbox Code Playgroud)

我尝试创建这样的折线图:

  plot5 <- ggplot(df, aes(year, pollution)) +
           geom_point() +
           geom_line() +
           labs(x = "Year", y = "Particulate matter emissions (tons)", title = "Motor vehicle emissions in Baltimore")
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

geom_path:每组只包含一个观察.你需要调整群体美感吗?

即使我想要折线图,图表也会显示为散点图.我试图取代geom_line()geom_line(aes(group = year)),但没有奏效.

在答案中,我被告知要将年份转换为因子变量.我做了,问题仍然存在.这是输出str(df)dput(df):

'data.frame':   4 obs. of  2 variables:
 $ year     : num  1 2 3 4
 $ pollution: num [1:4(1d)] 346.8 134.3 130.4 88.3
  ..- attr(*, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

144
推荐指数
3
解决办法
16万
查看次数

使用ggplot创建绘图时,hjust和vjust会做什么?

每次我使用ggplot创建一个情节时,我会花一点时间尝试不同的值来调整hjust和vjust

+ opts(axis.text.x = theme_text(hjust = 0.5))
Run Code Online (Sandbox Code Playgroud)

使轴标签在轴标签几乎接触轴的位置排成一行,并与轴齐平(可以说是轴对齐).但是,我真的不明白发生了什么.通常情况下,hjust = 0.5会产生如此显着不同的结果hjust = 0.6,例如,我只是通过玩弄不同的值来解决这个问题.

谁能指点我对hjust和vjust选项如何工作的全面解释?

plot r ggplot2

143
推荐指数
2
解决办法
11万
查看次数

将图例添加到ggplot2折线图中

我对ggplot2中的传说有疑问.我设法在同一图表中绘制三条线,并想要添加使用三种颜色的图例.这是使用的代码

library(ggplot2)    
require(RCurl)

link<-getURL("https://dl.dropbox.com/s/ds5zp9jonznpuwb/dat.txt")
datos<- read.csv(textConnection(link),header=TRUE,sep=";")
datos$fecha <- as.POSIXct(datos[,1], format="%d/%m/%Y")    

temp = ggplot(data=datos,aes(x=fecha, y=TempMax,colour="1")) + 
           geom_line(colour="red") + opts(title="TITULO") +
           ylab("Temperatura (C)") + xlab(" ") + 
           scale_y_continuous(limits = c(-10,40)) + 
           geom_line(aes(x=fecha, y=TempMedia,colour="2"),colour="green") + 
           geom_line(aes(x=fecha, y=TempMin,colour="2"),colour="blue") +
           scale_colour_manual(values=c("red","green","blue"))

temp
Run Code Online (Sandbox Code Playgroud)

和输出

ggplot三行

我想添加一个带有三种颜色的图例和变量的名称(TempMax,TempMedia和TempMin).我试过了

scale_colour_manual
Run Code Online (Sandbox Code Playgroud)

但找不到确切的方法.

遗憾的是,原始数据已从链接网站中删除,无法恢复.但它们来自具有此格式的meteo数据文件

"date","Tmax","Tmin","Tmed","Precip.diaria","Wmax","Wmed"
2000-07-31 00:00:00,-1.7,-1.7,-1.7,-99.9,20.4,20.4
2000-08-01 00:00:00,22.9,19,21.11,-99.9,6.3,2.83
2000-08-03 00:00:00,24.8,12.3,19.23,-99.9,6.8,3.87
2000-08-04 00:00:00,20.3,9.4,14.4,-99.9,8.3,5.29
2000-08-08 00:00:00,25.7,14.4,19.5,-99.9,7.9,3.22
2000-08-09 00:00:00,29.8,16.2,22.14,-99.9,8.5,3.27
2000-08-10 00:00:00,30,17.8,23.5,-99.9,7.7,3.61
2000-08-11 00:00:00,27.5,17,22.68,-99.9,8.8,3.85
2000-08-12 00:00:00,24,13.3,17.32,-99.9,8.4,3.49
Run Code Online (Sandbox Code Playgroud)

r legend ggplot2 r-faq

136
推荐指数
2
解决办法
23万
查看次数

在ggplot2中使用边缘直方图的散点图

有没有办法用边缘直方图创建散点图,就像下面的示例一样ggplot2?在Matlab中它是scatterhist()函数,并且R也存在等价物.但是,我还没有看到ggplot2.

具有边缘直方图的散点图

我开始尝试创建单个图形,但不知道如何正确排列它们.

 require(ggplot2)
 x<-rnorm(300)
 y<-rt(300,df=2)
 xy<-data.frame(x,y)
     xhist <- qplot(x, geom="histogram") + scale_x_continuous(limits=c(min(x),max(x))) + opts(axis.text.x = theme_blank(), axis.title.x=theme_blank(), axis.ticks = theme_blank(), aspect.ratio = 5/16, axis.text.y = theme_blank(), axis.title.y=theme_blank(), background.colour="white")
     yhist <- qplot(y, geom="histogram") + coord_flip() + opts(background.fill = "white", background.color ="black")

     yhist <- yhist + scale_x_continuous(limits=c(min(x),max(x))) + opts(axis.text.x = theme_blank(), axis.title.x=theme_blank(), axis.ticks = theme_blank(), aspect.ratio = 16/5, axis.text.y = theme_blank(), axis.title.y=theme_blank() )


     scatter <- qplot(x,y, data=xy)  + scale_x_continuous(limits=c(min(x),max(x))) + scale_y_continuous(limits=c(min(y),max(y)))
none <- qplot(x,y, data=xy) + geom_blank()
Run Code Online (Sandbox Code Playgroud)

并使用 …

r histogram scatter-plot ggplot2

130
推荐指数
12
解决办法
5万
查看次数

更改离散x刻度的顺序

我正在使用具有离散x刻度的ggplot制作一个躲闪条形图,x轴现在按字母顺序排列,但我需要重新排列它以便按y轴的值排序(即,最高的条形将位于左侧).

我尝试了排序或排序,但结果是对x轴进行排序,而不是分别对条形进行排序.

我做错了什么?

r ggplot2 r-faq

128
推荐指数
4
解决办法
23万
查看次数

将grid.arrange()绘图保存到文件

我正在尝试绘制多个绘图,使用ggplot2它们进行排列grid.arrange().由于我设法找到某人描述我遇到的确切问题,因此我引用了链接中的问题描述:

当我使用ggsave()grid.arrange(),即

grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2)
ggsave("sgcirNIR.jpg")
Run Code Online (Sandbox Code Playgroud)

我不保存网格图,而是保存最后一个ggplot.是否有任何方法可以通过grid.arrange()使用 ggsave()或类似的方式实际保存绘图?除了使用旧的方式

jpeg("sgcirNIR.jpg")
grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2)
dev.off()
Run Code Online (Sandbox Code Playgroud)

相同的链接提供以下解决方案:

require(grid)
require(gridExtra)
p <- arrangeGrob(qplot(1,1), textGrob("test"))
grid.draw(p) # interactive device
ggsave("saving.pdf", p) # need to specify what to save explicitly
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何使用以下代码ggsave()保存grid.arrange()调用的输出,该代码取自链接:

library(ggplot2)
library(gridExtra)
dsamp <- diamonds[sample(nrow(diamonds), 1000), ] 

p1 <- qplot(carat, price, data=dsamp, colour=clarity)
p2 <- qplot(carat, price, data=dsamp, colour=clarity, geom="path")

g_legend<-function(a.gplot){
tmp <- ggplot_gtable(ggplot_build(a.gplot))
leg <- which(sapply(tmp$grobs, function(x) x$name) == …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 gridextra

128
推荐指数
6
解决办法
8万
查看次数

标签 统计

ggplot2 ×10

r ×10

plot ×2

r-faq ×2

ggrepel ×1

gridextra ×1

histogram ×1

labeling ×1

legend ×1

scatter-plot ×1