我无法找到这个问题的答案,主要是因为使用独立字母(如"我")搜索任何内容都会导致问题.
"I"在这样的模型中做了什么?
data(rock)
lm(area~I(peri - mean(peri)), data = rock)
Run Code Online (Sandbox Code Playgroud)
考虑到以下情况不起作用:
lm(area ~ (peri - mean(peri)), data = rock)
Run Code Online (Sandbox Code Playgroud)
而这没有问题:
rock$peri - mean(rock$peri)
Run Code Online (Sandbox Code Playgroud)
关于如何自己研究这个问题的任何关键词也会非常有帮助.
我有20年的天气数据,但我只对每年的模式感兴趣.例如,我不关心1995年6月与2011年6月的不同之处.相反,我希望6月1日有20个值,6月2日有20个值,等等.
我的问题:如何删除日期对象的年份部分,保持月份和日期,同时还保持日期的顺序属性?我的最终目标是每个结果变量对应的重复mm/dd值的长列表.我将对待mm/dd之类的因素,但顺序正确.
# Given this:
as.Date(c("2014-06-01","1993-06-01", "2013-06-03", "1999-01-31"), "%Y-%m-%d")
# I want to get this:
"06-01" "06-01" "06-03" "01-31"
# That will sort like this
"01-31" "06-01" "06-01" "06-03"
Run Code Online (Sandbox Code Playgroud)
像使用sub()来删除年份并将短划线转换为小数的小黑客不起作用,因为那个月的第1个月与该月的第10个相同.我还尝试将日期转换为字符串,删除年份,然后将其重新设置为日期......这就是2014年的所有内容.
我想删除ggplot中生成的等值区域之间的线.我的问题是由一个非常大的地图(人口普查区块组)的非常大的地图推动的,这些区域如此众多,以至于考虑到边界的密度,不可能看到填充形状的颜色.我在Mac上使用更新的RStudio,ggplot2版本1.0.0; Windows上似乎没有出现同样的问题.
以下是每个县具有不同颜色的示例(使用县),因此不需要边框.第一个使用紫色边框来强调.第二个是color = NA,这是我尝试消除所有边界的失败.
library("ggplot2")
library("maps")
tn = map_data("county", region = "tennessee")
ggplot(tn, aes(x = long, y = lat, group = group)) +
geom_polygon(aes(fill = group), color = "purple")
Run Code Online (Sandbox Code Playgroud)

ggplot(tn, aes(x = long, y = lat, group = group)) +
geom_polygon(aes(fill = group), color = NA)
Run Code Online (Sandbox Code Playgroud)

我希望能够在Python 3.5中控制seaborn图上的轴刻度数.我已经习惯使用R的ggplot了,所以我在Python中使用类似的功能时遇到了一些麻烦.
举个例子,这是我目前正在使用的数据类型:
test = pd.DataFrame()
test["X"] = [1,2,3,1,2,3]
test["Y"] = [1,5,3,7,2,4]
test["Category"] = ["A", "A", "A", "B", "B", "B"]
Run Code Online (Sandbox Code Playgroud)
我想通过这样做来做像ggplot的facet_wrap()这样的事情:
sns.set(style = "ticks", color_codes = True)
test_plot = sns.FacetGrid(test, col = "Category")
test_plot = (test_plot.map(sns.plt.plot, "X", "Y").add_legend())
test_plot.set_xticks(np.arange(1,4,1))
sns.plt.show(test_plot)
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误.问题似乎是关于在FacetGrid中设置轴标签,但我不知道如何解决它.这是Python 3的问题还是在刻面图上指定轴?
UserWarning: tight_layout : falling back to Agg renderer
Run Code Online (Sandbox Code Playgroud)
warnings.warn("tight_layout:回退到Agg渲染器")
test_plot.set_xticks(np.arange(1,4,1))
AttributeError: 'FacetGrid' object has no attribute 'set_xticks'
Run Code Online (Sandbox Code Playgroud) 我正在研究R中的等值线,并且需要能够使用match.map()匹配状态名称.我正在使用的数据集将多个单词的名称粘在一起,如NorthDakota和DistrictOfColumbia.
如何使用正则表达式在低位字母序列之间插入空格?我已成功添加了一个空格,但无法保留指示空间位置的字母.
places = c("NorthDakota", "DistrictOfColumbia")
gsub("[[:lower:]][[:upper:]]", " ", places)
[1] "Nort akota" "Distric olumbia"
Run Code Online (Sandbox Code Playgroud) 有没有办法系统地选择数据框的最后一列?我希望能够将最后一列移动到第一列,但在移动时保持列的顺序.我需要一种方法来做到这一点,它不会列出使用子集的所有列(数据,选择= C(在新秩序中列出的所有列)),因为我将使用许多不同的数据帧.
这是一个示例,我想将最后两列移动到数据框的前面.它有效,但它很难看.
A = rep("A", 5)
B = rep("B", 5)
num1 = c(1:5)
num2 = c(36:40)
mydata2 = data.frame(num1, num2, A, B)
# Move A and B to the front of mydata2
mydata2_move = data.frame(A = mydata2$A, B = mydata2$B, mydata2[,1: (ncol(mydata2)-2)])
# A B num1 num2
#1 A B 1 36
#2 A B 2 37
#3 A B 3 38
#4 A B 4 39
#5 A B 5 40
Run Code Online (Sandbox Code Playgroud)
更改原始数据框中的列数会导致问题.这有效(见下文),但命名被抛弃了.为什么这两个例子表现不同?有没有更好的方法来做到这一点,并推广它?
mydata1_move = data.frame(A = …Run Code Online (Sandbox Code Playgroud) 我用ggplot生成下面的两行,并且想要遮蔽两行之间的特定区域,即y =x²大于y = 2x,其中2 <= x <= 3.
# create data #
x<-as.data.frame(c(1,2,3,4))
colnames(x)<-"x"
x$twox<-2*x$x
x$x2<-x$x^2
# Set colours #
blue<-rgb(0.8, 0.8, 1, alpha=0.25)
clear<-rgb(1, 0, 0, alpha=0.0001)
# Define region to fill #
x$fill <- "no fill"
x$fill[(x$x2 > x$twox) & (x$x <= 3 & x$x >= 2)] <- "fill"
# Plot #
ggplot(x, aes(x=x, y=twox)) +
geom_line(aes(y = twox)) +
geom_line(aes(y = x2)) +
geom_area(aes(fill=fill)) +
scale_y_continuous(expand = c(0, 0), limits=c(0,20)) +
scale_x_continuous(expand = c(0, 0), limits=c(0,5)) + …Run Code Online (Sandbox Code Playgroud) 我想expression在一个ggplot2方面标签上有一个R.
假设我正在策划tips data.frame:
library(reshape2)
> head(tips)
total_bill tip sex smoker day time size
1 16.99 1.01 Female No Sun Dinner 2
2 10.34 1.66 Male No Sun Dinner 3
3 21.01 3.50 Male No Sun Dinner 3
4 23.68 3.31 Male No Sun Dinner 2
5 24.59 3.61 Female No Sun Dinner 4
6 25.29 4.71 Male No Sun Dinner 4
Run Code Online (Sandbox Code Playgroud)
如下:
library(ggplot2)
sp <- ggplot(tips, aes(x=total_bill, y=tip/total_bill)) +
geom_point(shape=1) +
facet_wrap(~sex, ncol = …Run Code Online (Sandbox Code Playgroud) 我希望能够在knitr中打印出非预定的情节列表.我是能够做到这一点,但也有留下来化解一些皱纹.即:
1)如何在每个绘图之前的每个页面上抑制列表索引(如[[2]])?使用echo = FALSE不会做任何事情.
2)是否可以在渲染时为每个绘图设置大小?我已经尝试在块之外设置一个大小变量,但这只允许我使用一个值而不是每个绘图的不同值.
我问这是一个问题,因为他们似乎在讲同一课,即制作一份情节清单.
一些示例代码:
\documentclass{article}
\usepackage[margin=.5in, landscape]{geometry}
\begin{document}
<<diamond_plots, echo = FALSE, results = 'hide'>>==
library(ggplot2)
diamond_plot = function(data, cut_type){
ggplot(data, aes(color, fill=cut)) +
geom_bar() +
ggtitle(paste("Cut:", cut_type, sep = ""))
}
cuts = unique(diamonds$cut)
plots = list()
for(i in 1:length(cuts)){
data = subset(diamonds, cut == cuts[i])
plots[[i]] = diamond_plot(data, cuts[i])
}
height = 3
@
<<print_plots, results='asis', echo=FALSE, fig.width=10, fig.height=height>>=
plots
@
\end{document}
Run Code Online (Sandbox Code Playgroud)
这些图的PDF看起来像这样:
我使用patterns()参数data.table::melt()来融合具有几个容易定义的模式的列的数据.它正在工作,但我没有看到我如何创建一个字符索引变量而不是默认的数字细分.
例如,在A中,dog和cat列已编号...请查看"变量"列:
A = data.table(idcol = c(1:5),
dog_1 = c(1:5), cat_1 = c(101:105),
dog_2 = c(6:10), cat_2 = c(106:110),
dog_3 = c(11:15), cat_3 = c(111:115))
head(melt(A, measure = patterns("^dog", "^cat"), value.name = c("dog", "cat")))
idcol variable dog cat
1: 1 1 1 101
2: 2 1 2 102
3: 3 1 3 103
4: 4 1 4 104
5: 5 1 5 105
6: 1 2 6 106
Run Code Online (Sandbox Code Playgroud)
但是,在B中,dog和cat列用文本编号,但"变量"列仍然是数字.
B = data.table(idcol = c(1:5),
dog_one = …Run Code Online (Sandbox Code Playgroud) r ×9
ggplot2 ×4
axes ×1
data.table ×1
dataframe ×1
date ×1
facet-wrap ×1
fill ×1
formula ×1
gsub ×1
indexing ×1
knitr ×1
label ×1
maps ×1
melt ×1
polynomials ×1
python ×1
regex ×1
regression ×1
seaborn ×1