小编Tun*_*ung的帖子

在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万
查看次数

如何在R中生成一些最独特的颜色?

我正在绘制一个分类数据集,并希望使用独特的颜色来表示不同的类别.给定一个数字n,我怎样才能获得nR中MOST独特颜色的数量?谢谢.

r colors palette color-palette colorbrewer

119
推荐指数
8
解决办法
9万
查看次数

如何绘制空图?

我需要制作一个空图.这是我能想到的最好的.

plot(0, xaxt = 'n', yaxt = 'n', bty = 'n', pch = '', ylab = '', xlab = '')
Run Code Online (Sandbox Code Playgroud)

更简单的解决方案?

PS:完全空,没有轴等.

plot r ggplot2

95
推荐指数
6
解决办法
12万
查看次数

更改ggplot2中的字体

曾几何时,我ggplot2使用windowsFonts(Times=windowsFont("TT Times New Roman"))改变它来改变我的字体.现在我无法理解这一点.

在尝试设置family=""ggplot2 theme()我似乎无法生成字体更改,因为我使用不同的字体系列编译下面的MWE.

library(ggplot2)
library(extrafont)
loadfonts(device = "win")

a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
        ggtitle("Fuel Efficiency of 32 Cars") +
        xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
        theme(text=element_text(size=16, 
#       family="Comic Sans MS"))
#       family="CM Roman"))
#       family="TT Times New Roman"))
#       family="Sans"))
        family="Serif"))


print(a)
print("Graph should have refreshed")
Run Code Online (Sandbox Code Playgroud)

R正在返回一个警告font family not found in Windows font database,但有一个我正在关注的教程(如果我能再次找到它,我将在这里更新链接)说这是正常的而不是问题.此外,这在某种程度上起作用,因为我的图表曾经使用过一些arial或helvitica类型的字体.我认为即使在最初的迁移期间,这也始终是一个警告.

UPDATE

当我运行windowsFonts()我的输出是

$ serif [1]"TT Times …

fonts r ggplot2 showtext extrafont

56
推荐指数
4
解决办法
8万
查看次数

dplyr:如何在函数中使用group_by?

我想dplyr::group_by在另一个函数中使用函数,但我不知道如何将参数传递给这个函数.

有人能提供一个有效的例子吗?

library(dplyr)
data(iris)
iris %.% group_by(Species) %.% summarise(n = n()) # 
## Source: local data frame [3 x 2]
##      Species  n
## 1  virginica 50
## 2 versicolor 50
## 3     setosa 50

mytable0 <- function(x, ...) x %.% group_by(...) %.% summarise(n = n())
mytable0(iris, "Species") # OK
## Source: local data frame [3 x 2]
##      Species  n
## 1  virginica 50
## 2 versicolor 50
## 3     setosa 50

mytable1 <- function(x, key) x …
Run Code Online (Sandbox Code Playgroud)

r dplyr nse tidyeval

43
推荐指数
3
解决办法
2万
查看次数

ggplot:删除功能区边缘的线条

ggplot用来绘制时间过程数据(随着时间的推移固定比例到屏幕上的不同对象)并想要使用功能区来显示SE,但是功能区本身在顶部和底部边缘都有线条,这使得读取图形a有点难.我无法弄清楚如何摆脱这些边缘线.这是我的情节代码:

ggplot(d, aes(Time, y, color = Object, fill = Object)) +
  stat_summary(fun.y = "mean", geom = "line", size = 2) +
  stat_summary(fun.data = "mean_se", geom = "ribbon", alpha = .3)
Run Code Online (Sandbox Code Playgroud)

有什么建议?

这是一个最小的工作示例.我已将我的数据压缩为:

   Time Object          y      lower     upper
 1 1000      C 0.12453389 0.04510504 0.2039627
 2 1000      T 0.58826856 0.37615078 0.8003864
 3 1000      U 0.09437160 0.03278069 0.1559625
 4 1100      C 0.12140127 0.03943988 0.2033627
 5 1100      T 0.64560823 0.44898727 0.8422292
 6 1100      U 0.06725172 0.01584248 0.1186610

d <- structure(list(Time = c(1000L, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

40
推荐指数
3
解决办法
2万
查看次数

用ggplot2分割小提琴情节

我想用ggplot创建一个分裂小提琴密度图,就像seaborn文档的这个页面上的第四个例子一样.

这是一些数据:

set.seed(20160229)

my_data = data.frame(
    y=c(rnorm(1000), rnorm(1000, 0.5), rnorm(1000, 1), rnorm(1000, 1.5)),
    x=c(rep('a', 2000), rep('b', 2000)),
    m=c(rep('i', 1000), rep('j', 2000), rep('i', 1000))
)
Run Code Online (Sandbox Code Playgroud)

我可以像这样绘制躲闪的小提琴:

library('ggplot2')

ggplot(my_data, aes(x, y, fill=m)) +
  geom_violin()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是在视觉上比较并排分布中不同点的宽度很难.我无法在ggplot中找到任何拆分小提琴的例子 - 这可能吗?

我找到了一个基本的R图形解决方案,但功能很长,我想突出显示分布模式,这些模式很容易在ggplot中作为附加层添加,但如果我需要弄清楚如何编辑该功能将更难.

r ggplot2 violin-plot ggproto

37
推荐指数
2
解决办法
1万
查看次数

ggplot轴限制的不对称扩展

如何在ggplot中不对称地调整限制的扩展?例如,

library(ggplot2)

ggplot(mtcars) + 
  geom_bar(aes(x = cyl), width = 1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我希望条形图的底部与面板背景的底部齐平,但仍然需要顶部的空间.我可以使用空白注释来实现此目的:

ggplot(mtcars) + 
  geom_bar(aes(x = cyl), width = 1) +
  annotate("blank", x = 4, y = 16) +
  scale_y_continuous(expand = c(0.0,0)) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

ggplot但是,在以前的版本中,我可以使用Rosen Matev提供的解决方案:

library("scales")
scale_dimension.custom_expand <- function(scale, expand = ggplot2:::scale_expand(scale)) {
  expand_range(ggplot2:::scale_limits(scale), expand[[1]], expand[[2]])
}

scale_y_continuous <- function(...) {
  s <- ggplot2::scale_y_continuous(...)
  class(s) <- c('custom_expand', class(s))
  s
}
Run Code Online (Sandbox Code Playgroud)

然后使用scale_y_continuous(expand = list(c(0,0.1), c(0,0)))会在图表顶部添加一致的附加内容.但是,在当前版本中,我收到错误

ggplot(mtcars) + 
  geom_bar(aes(x = cyl), width = 1) +
  scale_y_continuous(expand = list(c(0,0.1), c(0,0))) …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

29
推荐指数
2
解决办法
5103
查看次数

为什么是enquo + !! 最好替换+ eval

在下面的例子中,我们为什么要赞成使用f1f2?从某种意义上说它更有效吗?对于习惯使用R的人来说,使用"substitute + eval"选项似乎更自然.

library(dplyr)

d = data.frame(x = 1:5,
               y = rnorm(5))

# using enquo + !!
f1 = function(mydata, myvar) {
  m = enquo(myvar)
  mydata %>%
    mutate(two_y = 2 * !!m)
}

# using substitute + eval    
f2 = function(mydata, myvar) {
  m = substitute(myvar)
  mydata %>%
    mutate(two_y = 2 * eval(m))
}

all.equal(d %>% f1(y), d %>% f2(y)) # TRUE
Run Code Online (Sandbox Code Playgroud)

换句话说,除了这个特殊的例子之外,我的问题是:我可以使用dplyr具有良好的基础R的替代+ eval的NSE函数编程,或者我真的需要学会喜欢所有这些rlang函数,因为有它的好处(速度,清晰度,组合性......)?

r dplyr nse tidyeval

26
推荐指数
3
解决办法
1423
查看次数

你如何将多个.txt文件读入R?

我正在使用R来显示一些所有数据都是.txt格式的数据.目录中有几百个文件,我想一次性将它们全部加载到一个表中.

有帮助吗?

编辑:

列出文件不是问题.但是我无法从列表转到内容.我从这里尝试了一些代码,但是我得到了这个部分的错误:

all.the.data <- lapply( all.the.files,  txt  , header=TRUE)
Run Code Online (Sandbox Code Playgroud)

 Error in match.fun(FUN) : object 'txt' not found
Run Code Online (Sandbox Code Playgroud)

任何能够澄清这个问题的代码片段都将不胜感激.

r fread lapply read.table readr

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