Ошибка ggplot при форматировании 24-часовой шкалы времени

        var doublePattern = @"(?<integer>[0-9]+)(?:\,|\.)(?<fraction>[0-9]+)";
        var sourceDoubleString = "03444,44426";
        var match = Regex.Match(sourceDoubleString, doublePattern);

        var doubleResult = match.Success ? double.Parse(match.Groups["integer"].Value) + (match.Groups["fraction"].Value == null ? 0 : double.Parse(match.Groups["fraction"].Value) / Math.Pow(10, match.Groups["fraction"].Value.Length)): 0;
        Console.WriteLine("Double of string '{0}' is {1}", sourceDoubleString, doubleResult);
0
задан jay.sf 21 February 2019 в 11:33
поделиться

1 ответ

Я бы сделал это следующим образом:

library(lubridate)

#get df1...

#convert hr to something more useable with...
df1$hr <- hour(hm(df1$hr))

ggplot(df1, aes(x = hr, y = Val, color = Date)) + geom_line()

Graph of Val vs Time of Day grouped by Date

или, если вы специально хотите "%H:%M" или похож на ваш х Формат времени метки оси:

ggplot(df1, aes(x = hr, y = Val, color = Date)) + geom_line() + scale_x_continuous(breaks = seq(0, 23, 1), labels = paste(seq(0, 23, 1), "00", sep = ":"))

Graph of Val vs Time of Day grouped by Date with x labels as hour:minute

Объяснение : мне никогда не было легко работать со временем и датами , так что если вы можете немного упростить задачу, сделайте это.

В вашем случае вас интересует только час дня, поэтому минуты излишни. Чтобы извлечь только час из вашего времени как символьный тип данных, есть несколько способов, но используя lubridate, вы можете использовать hm(df1$hr), который преобразует «10:00» в "10H 0M 0S", который является типом данных периода, от которого вы просто хотите час, который вы можете сделать с hour(), который даст вам 10 в качестве числового типа данных.

Так как один строчный hour(hm(df1$hr)) преобразует «10:00» в 10, то ggplot может просто отобразить «Val» против «hr» как числовые типы данных вместо временных или символьных типов данных, которые я считаю более легкое задание.

0
ответ дан indubitably 21 February 2019 в 11:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: