Для вашей первой проблемы, я бы попробовал expand_limits()
. Если у вас есть столбец только для времени, то должно сработать что-то вроде этого:
ggplot(...) +
geom_point(...) +
expand_limits(x =c(hms::as.hms("00:00:00"),hms::as.hms("23:59:00")))
альтернативно, вам нужно определить дату и время для пределы.
Вот две альтернативы с маркировкой сеанса именем пользователя
# create a named vector for the legend
user <- user_tmp %>% pull(username)
names(user) <- user_tmp$SessionId
# alternative one multiple days in a chart
# own column for times needs to be converted into a time
DATA <- DATA %>%
mutate(TimeLastUpdate = hms::as.hms(TimeLastUpdate))
# alternative one plot with times column
DATA %>%
ggplot(aes(x = TimeLastUpdate, y = TotalBandwidth, color =
SessionIdFac)) +
geom_line() +
expand_limits(x =c(hms::as.hms("00:00:00"),hms::as.hms("23:59:00"))) + #expand limits on the time
scale_color_discrete(labels = user) # labels the sessions with the user name
# alternative 2 plotting one day with datetime column
DATA %>%
filter(DateLastUpdate == "2019-03-22") %>% # filter on the day
ggplot(aes(x = DateTimeLastUpdate, y = TotalBandwidth, color = SessionIdFac )) +
geom_line() +
expand_limits(x = c(as.POSIXct("2019-03-22 00:00:00"),
as.POSIXct("2019-03-22 23:59:00"))) + # expand limits for the day
scale_color_discrete(label = user) # label the sessions with user name
. Объявите экземпляр MyClass и затем назовите функцию членства на том экземпляре:
MyClass m;
m.printInformation();
От Вашего вопроса неясно, хотите ли Вы смочь, используют класс без идентификационных данных или если вызов метода требует, чтобы Вы создали экземпляр класса. Это зависит от того, хотите ли Вы, чтобы printInformation участник записал немного общей информации или более конкретный относительно объектных идентификационных данных.
Случай 1: Вы хотите использовать класс, не создавая экземпляр. Члены того класса должны быть статичными, с помощью этого ключевого слова, Вы говорите компилятору, что хотите смочь назвать метод, не имея необходимость создавать новый экземпляр класса.
class MyClass
{
public:
static void printInformation();
};
Случай 2: Вы хотите, чтобы класс имел экземпляр, сначала необходимо создать объект так, чтобы класс имел идентификационные данные, после того как это сделано, можно использовать объект его методы.
Myclass m;
m.printInformation();
// Or, in the case that you want to use pointers:
Myclass * m = new Myclass();
m->printInformation();
Если Вы не знаете, когда использовать указатели, прочитайте сводку Pukku в этом вопросе о Переполнении стека.
Обратите внимание на то, что в текущем случае Вам не был бы нужен указатель.:-)
Если Вы хотите заставить свой код работать как выше, функция printInformation () должна быть объявлена и реализована как статическая функция.
Если с другой стороны, это, как предполагается, печатает информацию о конкретном объекте, необходимо создать объект сначала.
Необходимо создать объект с тех пор printInformation()
нестатично. Попытка:
int main() {
MyClass o;
o.printInformation();
fgetc( stdin );
return(0);
}
объявите это "статичный" как это:
static void MyClass::printInformation() { return; }