我想在ggplot2中创建一个干净版本的文本标签散点图.目标是直观地表示与约25个项目相关联的增加值.我已经在使用"position_jitter"了,但我想知道我能不能做得更好.
这是一些模拟数据:
title <- rep("A Really Rather Long Text Label", 25)
value <- runif(25, 1,10)
spacing <- seq(1:25)
df <- data.frame(title, value, spacing, stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)
以下是生成图表的代码:
library(ggplot2)
myplot <- ggplot(data=df, aes(x=spacing, y=value, label = title)) +
geom_text(aes(colour = value),
size = 2.5, fontface = "bold",
vjust = 0,
position = position_jitter(width=5, height=0)) +
theme_bw() +
scale_x_continuous(limits = c(-5, 30))+
scale_colour_gradient(low = "#6BAED6", high = "#08306B") +
theme(axis.title.x = element_blank(),
axis.ticks = element_blank(),
axis.text.x = element_blank(),
legend.position = "none")
myplot …Run Code Online (Sandbox Code Playgroud) 我很难让R读取包含撇号的.txt或.csv文件.
我的一些专栏包含描述性文字,例如"出于客户的需求"或"警长的副手".我的文件在Excel中正确打开(即,所有数据都显示在正确的单元格中;有3列和大约8000行,并且没有丢失的数据).但当我要求R读取文件时,会发生以下情况:
data <-read.table("datafile.csv", sep=",", header=TRUE)
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
line 520 did not have 3 elements
Run Code Online (Sandbox Code Playgroud)
(第520行是包含撇号的第一行.)
如果我进入.txt或.csv文件并手动删除所有撇号,则R会正确读取文件.但是,如果可以的话,我宁愿保留撇号.
我是R的新手,非常感谢任何帮助.
我正在寻找有关更好地绘制各类观测比例的建议.
我有一个看起来像这样的数据框:
cat1 <- c("high", "low", "high", "high", "high", "low", "low", "low", "high", "low", "low")
cat2 <- c("1-young", "3-old", "2-middle-aged", "3-old", "2-middle-aged", "2-middle-aged", "1-young", "1-young", "3-old", "3-old", "1-young")
df <- as.data.frame(cbind(cat1, cat2))
Run Code Online (Sandbox Code Playgroud)
在这里的例子,我要绘制的比例各年龄组的有值"高",而且比例各年龄组的有值"低".更一般地说,我想为类别2的每个值绘制属于第1类每个级别的观察百分比.
以下代码生成正确的结果,但只能通过在绘图之前手动计数和分割.有什么好的方法可以在ggplot中动态执行此操作吗?
library(plyr)
count1 <- count(df, vars=c("cat1", "cat2"))
count2 <- count(df, "cat2")
count1$totals <- count2$freq
count1$pct <- count1$freq / count1$totals
ggplot(data = count1, aes(x=cat2, y=pct))+
facet_wrap(~cat1)+
geom_bar()
Run Code Online (Sandbox Code Playgroud)
这个以前的stackoverflow问题提供了类似的东西,代码如下:
ggplot(mydataf, aes(x = foo)) +
geom_bar(aes(y = (..count..)/sum(..count..)))
Run Code Online (Sandbox Code Playgroud)
但我不想要"总和(......计数......)" - 它给出了所有箱子的总和- …
我根据多个列的多个条件对数据帧进行子集化.我选择数据框中的行,这些行包含在三个不同列中的任何一个列中的向量"条件"中定义的几个值中的任何一个.
我有一些有用的代码,但想知道还有什么其他(更优雅?)方法可以做到这一点.这就是我所做的:
criteria <-c(1:10)
subset1 <-subset(data, data[, "Col1"] %in% criteria | data[, "Col2"]
%in% criteria | data[, "Col3"] %in% criteria)
Run Code Online (Sandbox Code Playgroud)
建议热烈欢迎.(我是R初学者,所以对你所建议的内容的非常简单的解释也受到热烈欢迎.)