我正在绘制一个图表,其中x轴为分类变量,y轴为数值变量.
对于x轴,假设有许多数据点,则默认文本格式会使每个刻度线的标签与其他标签重叠.我如何(a)更改轴文本的字体大小和(b)更改文本的方向,使文本垂直于轴?
我正在绘制一个分类变量,而不是显示每个类别值的计数.
我正在寻找一种方法来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) 我在上个月一直在加快速度.
这是我的问题:
将颜色分配给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个级别.
但是,两组中的特定级别将以不同的颜色结束,这使得更难以一起阅读图形.
我是否需要在数据框中创建颜色矢量?或者是否有另一种方法可以为类别指定特定颜色?
我正在玩的数据来自下面列出的互联网资源
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)
这给了我以下内容:

我想要的是一个玩家名字的标签就在点旁边.我认为ggplot美学中的标签功能会为我做这个,但事实并非如此.
我也尝试过text()函数和textxy()函数library(calibrate),它们似乎都不适用于ggplot.
如何为这些点添加名称标签?
使用此数据框("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) 每次我使用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选项如何工作的全面解释?
我对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)
和输出

我想添加一个带有三种颜色的图例和变量的名称(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) 有没有办法用边缘直方图创建散点图,就像下面的示例一样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)
并使用 …
我正在使用具有离散x刻度的ggplot制作一个躲闪条形图,x轴现在按字母顺序排列,但我需要重新排列它以便按y轴的值排序(即,最高的条形将位于左侧).
我尝试了排序或排序,但结果是对x轴进行排序,而不是分别对条形进行排序.
我做错了什么?
我正在尝试绘制多个绘图,使用ggplot2它们进行排列grid.arrange().由于我设法找到某人描述我遇到的确切问题,因此我引用了链接中的问题描述:
当我使用ggsave()后grid.arrange(),即
Run Code Online (Sandbox Code Playgroud)grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) ggsave("sgcirNIR.jpg")
我不保存网格图,而是保存最后一个ggplot.是否有任何方法可以通过grid.arrange()使用
ggsave()或类似的方式实际保存绘图?除了使用旧的方式
Run Code Online (Sandbox Code Playgroud)jpeg("sgcirNIR.jpg") grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) dev.off()
相同的链接提供以下解决方案:
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)