我没有那么多使用ggplot2,但是今天我想我会在一些图表上试一试.但我无法弄清楚如何手动控制颜色geom_line()
我确定我忽略了一些简单的东西,但这是我的测试代码:
x <- c(1:20, 1:20)
variable <- c(rep("y1", 20), rep("y2", 20) )
value <- c(rnorm(20), rnorm(20,.5) )
df <- data.frame(x, variable, value )
d <- ggplot(df, aes(x=x, y=value, group=variable, colour=variable ) ) +
geom_line(size=2)
d
Run Code Online (Sandbox Code Playgroud)
这给了我预期的输出:

我认为我所要做的就是这样简单:
d + scale_fill_manual(values=c("#CC6666", "#9999CC"))
Run Code Online (Sandbox Code Playgroud)
但这没有任何改变.我错过了什么?
我想完全删除刻面的标签以创造一种迷你效果,因为标签是不相关的观众,我能想到的最好的是:
library(MASS)
library(ggplot2)
qplot(week,y,data=bacteria,group=ID, geom=c('point','line'), xlab='', ylab='') +
facet_wrap(~ID) +
theme(strip.text.x = element_text(size=0))
Run Code Online (Sandbox Code Playgroud)
那么我可以完全摆脱(现在是空白的)strip.background以便为"迷你图"留出更多空间吗?
或者,有没有更好的方法来获得像这样的大量二进制值时间序列的" 迷你 "效果?
我在理解为什么日期,标签和中断的处理没有像我在R中尝试使用ggplot2进行直方图时所预期的那样有问题.
我在找:
%Y-b格式的日期标签我已将数据上传到pastebin以使其可重现.我创建了几个列,因为我不确定这样做的最佳方法:
> dates <- read.csv("http://pastebin.com/raw.php?i=sDzXKFxJ", sep=",", header=T)
> head(dates)
YM Date Year Month
1 2008-Apr 2008-04-01 2008 4
2 2009-Apr 2009-04-01 2009 4
3 2009-Apr 2009-04-01 2009 4
4 2009-Apr 2009-04-01 2009 4
5 2009-Apr 2009-04-01 2009 4
6 2009-Apr 2009-04-01 2009 4
Run Code Online (Sandbox Code Playgroud)
这是我试过的:
library(ggplot2)
library(scales)
dates$converted <- as.Date(dates$Date, format="%Y-%m-%d")
ggplot(dates, aes(x=converted)) + geom_histogram()
+ opts(axis.text.x = theme_text(angle=90))
Run Code Online (Sandbox Code Playgroud)
这会产生这个图表.我想要%Y-%b格式化,所以我在周围搜索并尝试以下内容,基于此SO:
ggplot(dates, aes(x=converted)) + geom_histogram() …Run Code Online (Sandbox Code Playgroud) 我想将样本大小值与绘图上的点相关联.我可以geom_text用来定位点附近的数字,但这很麻烦.将它们沿着图的外边缘排列会更加清晰.
例如,我有:
df=data.frame(y=c("cat1","cat2","cat3"),x=c(12,10,14),n=c(5,15,20))
ggplot(df,aes(x=x,y=y,label=n))+geom_point()+geom_text(size=8,hjust=-0.5)
Run Code Online (Sandbox Code Playgroud)
这产生了这个情节:

我更喜欢这样的东西:

我知道我可以创建第二个图并使用grid.arrange(这篇文章),但确定textGrobs与y轴对齐的间距会很繁琐.有更简单的方法吗?谢谢!
以下是分箱密度图的示例:
require(ggplot2)
n <- 1e5
df <- data.frame(x = rexp(n), y = rexp(n))
p <- ggplot(df, aes(x = x, y = y)) + stat_binhex()
print(p)
Run Code Online (Sandbox Code Playgroud)

调整色标以便间隔是间隔的,但尝试一下会很不错
my_breaks <- round_any(exp(seq(log(10), log(5000), length = 5)), 10)
p + scale_fill_hue(breaks = as.factor(my_breaks), labels = as.character(my_breaks))
Run Code Online (Sandbox Code Playgroud)
结果Error: Continuous variable () supplied to discrete scale_hue.似乎休息期待一个因素(可能是?)并考虑到分类变量而设计?
有一个没有内置的解决方法,我会发布作为答案,但我想我可能只是迷失在我的使用scale_fill_hue,我想知道是否有任何明显的我缺少.
我有一个像这样的data.frame:
df <- read.csv(text = "ONE,TWO,THREE
23,234,324
34,534,12
56,324,124
34,234,124
123,534,654")
Run Code Online (Sandbox Code Playgroud)
我想生成一个百分比条形图,看起来像这样(在LibreOffice Calc中制作):

因此,条形应该标准化,因此所有堆叠具有相同的高度并且总和为100%.到目前为止,我所能获得的是一个堆积的条形图(不是百分比),使用:
barplot(as.matrix(df))
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
我是ggplot2的新手,并一直试图找到一个全面的美学列表.我想我理解他们的目的,但很难知道哪些可以用于各种情况(主要是geoms?).Hadley的网站偶尔会在个别地理位置的页面上列出可用的美学,而R文档偶尔(尽管很少)会做同样的事情.我甚至发现了两个不太匹配的geom.
我在这里搜索了一些答案,甚至买了这本书!唉,没有帮助.
我认为拥有一个列在一个维度中的所有美学和所有geom(和其他对象?)在另一个维度中列出的表格会很棒.
有谁知道这样的事情?
R中是否有一个简单的方法(命令)列出可以应用于对象的所有美学?
以下是表格的开始方式:
List x y fill size colour linetype . . .
geom_point Yes Yes Yes Yes Yes No
geom_abline Yes Yes No Yes Yes Yes
.
.
.
Run Code Online (Sandbox Code Playgroud)
美学定义/参数目录也是非常有用的参考.
我在一个图中有数千个点并设置"size = 1".但是,图例中的磅值也会减小.如何增加图例中的磅值?
例如.
num <- 10000
set.seed(1)
df <- data.frame(x = seq(1, num), y = runif(num), z = rep(1:2, each = num / 2))
df$z <- factor(df$z)
library(ggplot2)
p <- ggplot(df, aes(x, y, colour = z)) + geom_point(size = 1)
p
Run Code Online (Sandbox Code Playgroud)

我知道这不是一个数据可视化问题,但老板要求它,所以我需要弄清楚它是否可行.
谢谢!
另一个发布的图表,另一天在ggplot2中调整了一些东西...我在唠叨?我不确定...
dat <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(dat, aes(x=x,y=y)) +
geom_point() +
labs(y=expression(Blah[1]))
dat <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(dat, aes(x=x,y=y)) +
geom_point() +
labs(y=expression(Blah[1d]))
Run Code Online (Sandbox Code Playgroud)
我正在尝试弄清楚如何在轴标签中加下标字母.第一个例子只是一个数字,只要你在方括号中有一个字符就会失败.Blah [下标(1d)]基本上就是我需要的,但我无法弄清楚如何让它让我在下标中有字母.尝试了各种变体,包括paste()等.
当然,要增加挫折......
labs(y=expression(Blah[12])) - 这很有效
labs(y=expression(Blah[d])) - 这很有效
labs(y=expression(Blah[d1])) - 这很有效
labs(y=expression(Blah[1d])) - 这失败了.
思考?