Недавно я нашел очень легкую и интересную функцию для печати легенды за пределами области графика, где вы хотите.
Сделайте внешний край в правой части графика.
par(xpd=T, mar=par()$mar+c(0,0,0,5))
Создать график
plot(1:3, rnorm(3), pch = 1, lty = 1, type = "o", ylim=c(-2,2))
lines(1:3, rnorm(3), pch = 2, lty = 2, type="o")
Добавить легенду и просто использовать функцию локатора (1), как показано ниже. Затем вам нужно просто щелкнуть по желанию после загрузки после сценария.
legend(locator(1),c("group A", "group B"), pch = c(1,2), lty = c(1,2))
Попробуйте
Я бы написал два или три метода расширения:
public static DateTime WithTime(this DateTime date, TimeSpan time)
{
return date.Date + time;
}
public static DateTime WithDate(this DateTime original, DateTime newDate)
{
return newDate.WithTime(original);
}
public static DateTime WithTime(this DateTime original, DateTime newTime)
{
return original.Date + newTime.TimeOfDay;
}
(Вам действительно не нужны оба вторых метода, но иногда это может быть проще, если вы объединяете много вызовов.)
Обратите внимание, что вы не создаете никаких объектов в терминах элементов в куче, поскольку DateTime
является структурой.
DateTime is неизменяемая структура.
Единственный вариант - создать новую структуру DateTime на основе ваших двух существующих значений. Это лучший подход. К счастью, это один лайнер:
DateTime CreateNewDateTime(DateTime date, DateTime time)
{
return new DateTime(date.Year, date.Month, date.Day, time.Hour, time.Minute, time.Second);
}
Удалите время из существующего datetime, написав .Date
DateTime new = oldDate.Date;
Добавьте TIme, добавив часы, минуты и секунды по отдельности
DateTime new = oldDate.Date.AddHours(14).AddMinutes(12).AddSeconds(33);
или все сразу
DateTime new = oldDate.Date.AddSeconds(51153);
, либо добавив a TimeSpan ()
DateTime new = oldDate.Date.Add(new TimeSpan(14,12,33));
Возможно, это не в точности то, что вы ищете, но класс DateTime имеет ряд методов Add (AddMinutes (), AddDays () и т. Д.) . Я говорю, что это может быть не то, что вы ищете, потому что они возвращают DateTime, поэтому вам нужно будет сделать что-то вроде
myDate = myDate.AddMinutes(60);