Я попробовал вышеуказанное решение, но я счел его непригодным для больших объемов данных. Затем я обнаружил функцию потока:
MongoClient.connect("...", function(err, db){
var c = db.collection('yourCollection');
var s = c.find({/* your query */}).stream();
s.on('data', function(doc){
c.update({_id: doc._id}, {$set: {name : doc.firstName + ' ' + doc.lastName}}, function(err, result) { /* result == true? */} }
});
s.on('end', function(){
// stream can end before all your updates do if you have a lot
})
})
Если требование иметь легенду слева можно ослабить и поместить легенду вверх, тогда вы можете использовать ggarrange , оба графика у оси выровняют
library ( ggplot2 )
library(ggpubr)
set.seed(12345)
N <- 10000
x <- rnbinom(N, 1, .15)
x = data.frame ( value=x, yyy= rep("z", length(x)))
g1 <- ggplot(x, aes(y=value, x=yyy))+
geom_point(aes(fill = yyy), size = 3, shape = 21, position = position_jitterdodge(), alpha = .14 )+
theme_bw() + coord_flip() + theme(legend.position="top")
h1 = ggplot( x, aes(value)) +
geom_histogram(aes(y = stat(density)), binwidth = .1)
ggarrange(g1, h1, ncol=1, nrow=2, align = "v" )
Вы можете легко разместить их на одном графике, используя geom_point + geom_histogram
принципал. Для этого вам необходимо отрегулировать два параметра вручную: положение точек на оси Y (yPos
) и силу вертикального джиттера (jit
).
yPos <- 1700
jit <- 100
ggplot(x) +
geom_point(aes(value, yPos, fill = yyy),
position = position_jitterdodge(jitter.height = jit),
size = 3, shape = 21, alpha = 0.14) +
geom_histogram(aes(value), binwidth = 0.1) +
theme_bw() +
theme(legend.position = "left")
Окончательное решение выглядит следующим образом: