2014-02-06 5 views
0

У меня есть этот код, чтобы построить мой участокКак преобразовать метки руководства в пользовательский формат?

здесь merged1.data

структура (список (время = с (1391525413022, 1391525438998, 1391525440903, 1391525446466 , 1391525451770, 1391525456050, 1391525472635, 1391525489437, 1391525502903, 1391525512793, 1391525524136, 1391525549132, 1391525562656, 1391525570842, 1391525578937, 1391525603513, 1391525858760, 1391525988388, 1391525991792, 1391526065759), time_print = структура (с (1391525413, 1391525438 , 1391525440, 1391525446, 1391525451, 1391525456, 139152 5472, 1391525489, 1391525502, 1391525512, 1391525524, 1391525549, 1391525562, 1391525570, 1391525578, 1391525603, 1391525858, 1391525988, 1391525991, 1391526065), класс = с ("POSIXct", "POSIXt"), tzone = "") , истекшее = c (2016, 1830, 2494, 2717, 2837, 1093, 1216, 2536, 2656, 2416, 2093, 2684, 1878, 2808, 2294, 1179, 1291, 1166, 1244, 1039), нити = c (7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7), версия = структура (c (1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "025.00", class = "factor")) .Names = c ("time", "time_print", "истек", "threads", "version"), row.names = c (NA, -20L), class = "data.frame")

здесь merged2.data

структуру (список (время = C (1391525413022, 1391525438998, 1391525440903, 1391525446466 , 1391525451770, 1391525456050, 1391525472635, 1391525489437, 1391525502903 , 1391525512793, 1391525524136, 1391525549132 , 1391525562656, 1391525570842, 1391525578937, 1391525603513, 1391525858760, 1391525988388, 1391525991792, 1391526065759), time_print = структура (с (1391525413, 1391525438 , 1391525440, 1391525446, 1391525451, 1391525456, 1391525472, 13 91525489, 1391525502, 1391525512, 1391525524, 1391525549, 1391525562, 1391525570, 1391525578, 1391525603, 1391525858, 1391525988, 1391525991, 1391526065), класс = c ("POSIXct", "POSIXt"), tzone = ""), истек = c (2016, 1830, 2494, 2717, 2837, 1093, 1216, 2536, 2656, 2416, 2093, 2684, 1878, 2808, 2294, 1179, 1291, 1166, 1244, 1039), резьбы = c (6 , 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6), версия = структура (c (1L, ) 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "025.02", class = " factor ")) .Names = c (" time ", " time_print "," истек "," threads "," version "), row.names = c (NA, -20L), class =" data. кадра ")

и сюжет функция

combined_plot <- ggplot(merged1.data, aes(x=threads, y=elapsed)) + 
        geom_point(aes(size = elapsed,shape=version, colour=time), show_guide = TRUE) + 
        scale_size(guide="none") + 
        scale_color_gradient(high = "black", low="green", name="Time") + 
        geom_point(data=merged2.data, aes(size = elapsed, shape=version, colour=time), show_guide = TRUE) + 
        scale_shape_manual(values=c(15,17), name="Versions") 

Здесь я черчения время ответа против текущего количества потоков, выполняющихся и градиент, как предполагается, будет третий Dimention на 2-ом экране просто указать, где мы начали захватывать данные и где мы закончили делать это.

time - это временная метка, такая как 1.391525e+12 (как показано на консоли), и когда я вычисляю градиентный цвет с этими значениями, он выглядит уродливым по легенде.

Так что я хочу, чтобы вычислить цвет градиента в зависимости от этого списка числовых значений, но чтобы показать их преобразованными (например, в человекочитаемую дату/время) в качестве меток на моей градиентной легенде. Теперь это выглядит как на картинке ниже:

elapsed versus threads

+0

Вы пытались преобразовать свои временные метки в переменную POSIXct? – Roland

+0

@Roland хорошо да, я пробовал, но я не могу использовать градиент с не числовыми значениями, проблема в том, что список значений очень велик, поэтому это не похоже на 10 снимков данных, которые можно представить на дискретной легенде ... –

+0

@Roland Я как-то должен указать данные для функциональности, которая печатает эти метки на картинке, но я не знаю, как ... –

ответ

1

Определить функцию форматирования, как shown в Cookbook:

datetime_formatter <- function(x) { 
    x <- as.POSIXct(x/1000, origin = "1970-01-01") 
    lab <- format(x, "%d.%m. %H:%M:%S") 
    lab 
} 

combined_plot <- ggplot(merged1.data, aes(x=threads, y=elapsed)) + 
    geom_point(aes(size = elapsed,shape=version, colour=time), show_guide = TRUE) + 
    scale_size(guide="none") + 
    scale_color_gradient(high = "black", low="green", name="Time", label=datetime_formatter) + 
    geom_point(data=merged2.data, aes(size = elapsed, shape=version, colour=time), show_guide = TRUE) + 
    scale_shape_manual(values=c(15,17), name="Versions") 

print(combined_plot) 

enter image description here

Edit:

Вот я считаю, что это лучший способ представить эти данные (ssuming ваши реальные данные менее избыточны, чем то, что вы здесь показываете).

DF <- rbind(merged1.data, merged2.data) 
combined_plot <- ggplot(DF, 
         aes(x=time_print, y=elapsed, colour=factor(threads), 
          shape=version)) + 
        geom_point(size=5) 
print(combined_plot) 

enter image description here

Однако трудно рекомендовать альтернативы без всех фактов.

+0

Это просто потрясающе, спасибо большое, @Roland, вы профессионал –

+0

И немного вопрос стороны, как вы думаете, эта форма график эффективен для представления фактического представления в процессе? Или это уродливый способ сделать это? Как бы вы это сделали сами? –

+0

Нет, это неплохой сюжет. См. Мое редактирование. – Roland

Смежные вопросы