我已经将我的弹性搜索实现配置为通过映射中的id来对结果进行分析,当我向用户显示该方面时,我需要能够显示代表它的人类可读名称.我需要的数据都存在于映射中,但我不确定如何将其作为方面的一部分返回.当然有可能吗?
考虑下面的例子,我想小面给我一些方法来关联thingId到thingName(或其他任何thing可能需要的属性):
制图
{
thingId,
thingName
}
Run Code Online (Sandbox Code Playgroud)
分面查询
{
"facets":{
"things":{ "terms":{ "field":"thingId" } }
}
}
Run Code Online (Sandbox Code Playgroud)
结果
{
"hits":{
"total":3,
"max_score":1.0,
"hits":[
...
]
},
"facets":{
"things":{
"_type":"terms",
"missing":0,
"total":3,
"other":0,
"terms":[
{
"term":"5",
"count":1
},
{
"term":"4",
"count":1
},
{
"term":"2",
"count":1
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
关于Solr的这个答案建议我将两个属性(thingName和thingId)都面对,然后循环遍历两个方面结果集,假设项目的顺序是相同的.我不知道会有多可靠,但这是一个选择.
编辑2
这个答案表明,如果不将两个领域合并为一个单一的价值并且面对这个问题,就不可能做我想做的事情:thingId|thingName.不理想.
编辑3
这个答案建议将这些值组合成一个字段并在其上进行分面(如上所述),但它使用术语脚本来实现组合,因此不需要我索引值的组合形式.仍然不完美,但似乎是最糟糕的选择.
一些背景:在我的eclipse项目中,我遇到了可怕的"Java编译器级别与已安装的Java项目方面的版本不匹配"错误.我在OS X Snow Leopard上使用Eclipse Helios.
我在编辑eclipse和maven的java facet设置时遇到了问题.我到处搜索并说到项目属性 - >项目方面并在那里编辑版本.但是对于我的Eclipse实例,这些设置无法通过UI获得.
如何手动编辑java facet版本?
我有一个构成n x m网格的刻面图.按照设计,最后一个(右下角)单元格总是空的,所以我想通过添加另一个ggplot对象来利用额外的空间.我目前的解决方案依赖于低级viewport方法,这种方法不是很优雅,需要对位置和大小进行一些硬编码.
相反,我认为空的空间可以通过其他方式到达,可能与gridExtra?
这是一个最小的例子n=m=2.请注意,边缘未正确对齐,因此需要一些额外的工作来手动调整视口的参数,这是一种痛苦,特别是如果(n, m)之后进行更改.
library(ggplot2)
library(grid)
p <- qplot(displ, hwy, data = mpg[mpg$cyl != 5, ]) +
facet_wrap(~ cyl, nrow=2)
q <- qplot(date, unemploy, data = economics, geom = "line") +
labs(x = NULL, y = NULL)
p
print(q, vp=viewport(0.75, 0.275, 0.45, 0.45))
Run Code Online (Sandbox Code Playgroud)

我正在尝试reorder使用scales = free_x在ggplot2 中也使用的小面包裹的绘图,但是重新排序功能没有正确地重新排序x轴.这是我正在运行的:
library(ggplot2)
df <- read.table("speaking_distribution_by_play.txt",
header = F,
sep = "\t")
ggplot(df, aes(x=reorder(V2, V3), y=V3)) +
geom_bar(stat = "identity") +
facet_wrap(~V1, ncol = 4, scales = "free_x") +
opts(title = "Distribution of Speakers in Shakespearean Drama") +
xlab("Speaking Role") +
ylab("Words Spoken") +
opts(axis.text.x=theme_text(angle=90, hjust=1))
Run Code Online (Sandbox Code Playgroud)
在从此制表符分隔文件中读取的数据框上运行该代码会生成一个图,其中每个分面图的x轴仅部分排序.SO上的其他人提出了一个非常相似的问题,但唯一提出的解决方案是使用网格排列.因为我的数据集比那个问题中的数据集要大得多,所以这不会是一个非常迅速的操作,所以我想问:有没有办法重新排序每个刻面图的x轴,以便显示尺寸增加(或减少)的条形?我非常感谢其他人可以在这个问题上提供任何帮助.
我正在尝试将每个方面的x轴限制设置为Seaborn facetgrid distplot的不同值.我知道我可以通过g.axes访问子图中的所有轴,所以我试图迭代它们并设置xlim:
g = sns.FacetGrid(mapping, col=options.facetCol, row=options.facetRow, col_order=sorted(cols), hue=options.group)
g = g.map(sns.distplot, options.axis)
for i, ax in enumerate(g.axes.flat): # set every-other axis for testing purposes
if i % 2 == 0[enter link description here][1]:
ax.set_xlim(-400,500)
else:
ax.set_xlim(-200,200)
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,所有轴都设置为(-200,200)而不是每个其他方面.
我究竟做错了什么?
我想绘制一个水平小平面线与该方面的总体中位数.
我尝试了这种方法,但没有使用以下代码创建虚拟汇总表:
require(ggplot2)
dt = data.frame(gr = rep(1:2, each = 500),
id = rep(1:5, 2, each = 100),
y = c(rnorm(500, mean = 0, sd = 1), rnorm(500, mean = 1, sd = 2)))
ggplot(dt, aes(x = as.factor(id), y = y)) +
geom_boxplot() +
facet_wrap(~ gr) +
geom_hline(aes(yintercept = median(y), group = gr), colour = 'red')
Run Code Online (Sandbox Code Playgroud)
过去,建议使用解决方案
geom_line(stat = "hline", yintercept = "median")
Run Code Online (Sandbox Code Playgroud)
但它已经停止(产生错误"没有名为StatHline的统计数据").
另一个解决方案建
geom_errorbar(aes(ymax=..y.., ymin=..y.., y = mean))
Run Code Online (Sandbox Code Playgroud)
但它产生了
Error in data.frame(y = function …Run Code Online (Sandbox Code Playgroud) 可能重复:
ggplot - 按功能输出的facet
ggplot2的facets选择是伟大的显示的因素多条曲线,但我已经遇到了麻烦,学习连续变量高效地转换成因素在其中.使用以下数据:
DF <- data.frame(WindDir=sample(0:180, 20, replace=T),
WindSpeed=sample(1:40, 20, replace=T),
Force=sample(1:40, 20, replace=T))
qplot(WindSpeed, Force, data=DF, facets=~cut(WindDir, seq(0,180,30)))
Run Code Online (Sandbox Code Playgroud)
我收到错误: At least one layer must contain all variables used for facetting
我想Force~WindSpeed通过离散的30度间隔检查这种关系,但似乎facet需要将因子附加到正在使用的数据框上(显然我可以这样做DF$DiscreteWindDir <- cut(...),但这似乎是不必要的).facets在将连续变量转换为因子时有没有办法使用?
由于之前(此处)已经提出了类似的问题,但我无法根据我的具体问题调整解决方案.对于下面显示的每个图,应该有ax轴和y轴.
数据:
dput(df_nSubj)
structure(list(nSubj = c(10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L,
30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 40L, …Run Code Online (Sandbox Code Playgroud) 我正在创建两个图ggplot2,然后使用grid.arrange它们将它们合并在一起.我应该说这两个图也facet_grid用于视觉调整.

我的问题是,底部的情节,实际上是一个数据表,最终在左侧和右侧被"切断",因为小平面的起始位置和结束位置.有没有办法让我调整一下?我想调整一下,所以积分不会被切断.
以下是重现它的数据:
df <- structure(list(SurveyID = c(16L, 16L, 16L, 16L, 16L, 16L, 16L,
16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L,
16L, 16L, 16L, 16L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L,
26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L,
26L, 26L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L,
47L, 47L, 47L, 47L, 47L, 47L, 47L, 47L, …Run Code Online (Sandbox Code Playgroud) 我有这个情节,我需要围绕y轴,所以看起来是可以接受的除了我想不只是在y轴上显示1值的事实.我想在"scale_y_continuous"函数中添加"limit",以便每个facet图的限制对于各个facet是唯一的.
这里是仅在y轴上显示60和80的图
dat = data.frame(x = c(1,2,3,1,2,3),A=c(80.6, 82,83,60,61,62),A_up =c(81,84,85,62,63,64), A_low =c(79,78,81,59,58,57), group = c("z","z","z","y","y","y"))
ggplot(data=dat , aes(x=as.factor(x), y=A, group = 1)) + #, color =Group, group = Group
geom_line() + geom_point() + # facet_wrap(~COUNTERPARTY_STRATEGY ,ncol=2)
geom_errorbar(aes(ymax = A_up ,ymin = A_low), width = .25) +
scale_y_continuous(breaks = seq( floor( (min(dat$A_low)-11) /10)*10 ,
ceiling( (max(dat$A_up)+11) /10)*10,10 ),
labels = seq( floor( (min(dat$A_low)-11) /10)*10 ,
ceiling( (max(dat$A_up)+11) /10)*10,10 )
) +
facet_wrap(~group ,ncol=2, scales = "free_y")
Run Code Online (Sandbox Code Playgroud)
现在我在比例y连续中添加限制,它全局应用限制.
dat = data.frame(x = c(1,2,3,1,2,3),A=c(80.6, …Run Code Online (Sandbox Code Playgroud)