Вы можете передать обратный вызов и вызвать обратный вызов внутри асинхронного вызова
примерно так:
class func getGenres(completionHandler: (genres: NSArray) -> ()) {
...
let task = session.dataTaskWithURL(url) {
data, response, error in
...
resultsArray = results
completionHandler(genres: resultsArray)
}
...
task.resume()
}
, а затем вызвать этот метод:
override func viewDidLoad() {
Bookshop.getGenres {
genres in
println("View Controller: \(genres)")
}
}
Я предполагаю, что вы хотите сопоставить балл с вашей эстетикой цвета, а не с значением , как написано в вашем общем коде.
Просто преобразуйте цвет в фактор в вашем первоначальном эстетическом вызове:
ggplot(dat, aes(x = sample, y = cond, color = as.factor(score))) +
geom_point()
РЕДАКТИРОВАТЬ: Пользователь указал, что он хотел бы отфильтровать наблюдения, где оценка не равна 1, а затем раскрасить точки значением . Вы можете сделать это, добавив следующую конвейерную операцию:
Я предполагаю, что вы хотите сопоставить счет с вашим эстетическим цветом, а не со значением , как написано в вашем общем коде .
Просто преобразуйте цвет в фактор в вашем первоначальном вызове эстетики:
dat %>%
filter(score == 1) %>%
ggplot(aes(x = sample, y = cond, color = as.factor(value))) +
geom_point()
Обратите внимание, что есть только 3 уровня фактора оценивают , и нам не хватает уровня b из выборки по оси X. Сохраните все уровни, указав drop = FALSE
в scale_x_discrete()
:
dat %>%
filter(score == 1) %>%
ggplot(aes(x = sample, y = cond, color = as.factor(value))) +
geom_point() +
scale_x_discrete(drop = FALSE)