提问人:Antonio Manco 提问时间:12/8/2019 最后编辑:Antonio Manco 更新时间:12/17/2019 访问量:988
如何在 ggplot 中以scale_x_datetime为单位设置具有精确间隔的中断?
How to set breaks with exact interval in scale_x_datetime in ggplot?
问:
我想每 12 小时在我的绘图中设置一次中断。 因此,我希望在午夜有一个点,在中午在x轴上有一个点,依此类推。
我在绘图代码行中定义了我的中断,但在生成的绘图中,我没有找到我想要的东西。
我每 12 小时休息一次,但在 06:00 和 18:00。
我不明白为什么,也是因为数据集从第一天的 00:00 开始,到最后一天的 23:30 结束。scale_x_datetime
我与您分享我使用的部分数据集和代码,但我不明白问题出在哪里。 我以某种方式编写了代码,但结果不同,因此没有消息错误,只有与预期不同的输出。
数据
structure(list(time = structure(c(1531267200, 1531269000, 1531270800,
1531272600, 1531274400, 1531276200, 1531278000, 1531279800, 1531281600,
1531283400, 1531285200, 1531287000, 1531288800, 1531290600, 1531292400,
1531294200, 1531296000, 1531297800, 1531299600, 1531301400, 1531303200,
1531305000, 1531306800, 1531308600, 1531310400, 1531312200, 1531314000,
1531315800, 1531317600, 1531319400, 1531321200, 1531323000, 1531324800,
1531326600, 1531328400, 1531330200, 1531332000, 1531333800, 1531335600,
1531337400, 1531339200, 1531341000, 1531342800, 1531344600, 1531346400,
1531348200, 1531350000, 1531351800, 1531353600, 1531355400, 1531357200,
1531359000, 1531360800, 1531362600, 1531364400, 1531366200, 1531368000,
1531369800, 1531371600, 1531373400, 1531375200, 1531377000, 1531378800,
1531380600, 1531382400, 1531384200, 1531386000, 1531387800, 1531389600,
1531391400, 1531393200, 1531395000, 1531396800, 1531398600, 1531400400,
1531402200, 1531404000, 1531405800, 1531407600, 1531409400, 1531411200,
1531413000, 1531414800, 1531416600, 1531418400, 1531420200, 1531422000,
1531423800, 1531425600, 1531427400, 1531429200, 1531431000, 1531432800,
1531434600, 1531436400, 1531438200, 1531440000, 1531441800, 1531443600,
1531445400, 1531447200, 1531449000, 1531450800, 1531452600, 1531454400,
1531456200, 1531458000, 1531459800, 1531461600, 1531463400, 1531465200,
1531467000, 1531468800, 1531470600, 1531472400, 1531474200, 1531476000,
1531477800, 1531479600, 1531481400, 1531483200, 1531485000, 1531486800,
1531488600, 1531490400, 1531492200, 1531494000, 1531495800, 1531497600,
1531499400, 1531501200, 1531503000, 1531504800, 1531506600, 1531508400,
1531510200, 1531512000, 1531513800, 1531515600, 1531517400, 1531519200,
1531521000, 1531522800, 1531524600, 1531526400, 1531528200, 1531530000,
1531531800, 1531533600, 1531535400, 1531537200, 1531539000, 1531540800,
1531542600, 1531544400, 1531546200, 1531548000, 1531549800, 1531551600,
1531553400, 1531555200, 1531557000, 1531558800, 1531560600, 1531562400,
1531564200, 1531566000, 1531567800, 1531569600, 1531571400, 1531573200,
1531575000, 1531576800, 1531578600, 1531580400, 1531582200, 1531584000,
1531585800, 1531587600, 1531589400, 1531591200, 1531593000, 1531594800,
1531596600, 1531598400, 1531600200, 1531602000, 1531603800, 1531605600,
1531607400, 1531609200, 1531611000, 1531612800, 1531614600, 1531616400,
1531618200, 1531620000, 1531621800, 1531623600, 1531625400, 1531627200,
1531629000, 1531630800, 1531632600, 1531634400, 1531636200, 1531638000,
1531639800, 1531641600, 1531643400, 1531645200, 1531647000, 1531648800,
1531650600, 1531652400, 1531654200, 1531656000, 1531657800, 1531659600,
1531661400, 1531663200, 1531665000, 1531666800, 1531668600, 1531670400,
1531672200, 1531674000, 1531675800, 1531677600, 1531679400, 1531681200,
1531683000, 1531684800, 1531686600, 1531688400, 1531690200, 1531690200,
1531692000, 1531693800, 1531695600, 1531697400), class = c("POSIXct",
"POSIXt"), tzone = "%Y-%m-%d %H:%M:%OS"), mz33_fluxmax = c(0.076777,
-0.17534, 0.17681, 0.15172, -0.057511, -0.22038, 0.13502, 0.17552,
0.23582, -0.15671, -0.1752, 0.26608, 0.2665, 0.1233, -0.48242,
-0.72902, -0.14728, 0.12376, -0.50489, -0.22167, -0.079578, NA,
NA, NA, 0.29423, 0.20697, -0.13498, 0.34365, -0.32322, 0.23056,
0.49785, -0.25187, 0.22715, -0.19781, -0.17822, 0.12703, 0.18494,
NA, -0.03901, -0.086094, 0.015005, -0.015033, -0.18467, -0.41722,
-0.18892, -0.10908, -0.086094, -0.034042, -0.086769, 0.049228,
-0.059182, 0.10151, -0.098205, -0.15881, -0.23624, 0.11999, -0.12395,
0.4555, 0.20138, 0.21409, 0.24843, 0.53419, -0.46311, NA, 0.29578,
-0.03619, 0.24268, 0.34504, 0.35195, -0.1936, 0.32005, 0.18311,
0.242905, 0.44491, 0.24313, 0.30092, 0.30548, 0.24268, 0.14328,
-0.16228, 0.3492, -0.075164, 0.020655, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, -0.15384, -0.075064, NA, -0.12491, -0.34078,
-0.19206, -0.17572, 0.16975, 0.017802, -0.03983, -0.096556, -0.058276,
-0.31671, -0.33379, 0.1475, -0.29348, -0.23329, -0.0016756, 0.26635,
-0.14325, 0.29148, -0.30933, 0.27531, -0.29819, 0.15705, -0.26929,
0.2432, -0.27922, 0.3034, 0.16572, 0.2954, 0.2385, -0.21814,
0.14569, 0.20001, -0.26365, 0.18924, 0.12316, 0.20071, -0.083687,
-0.088969, -0.019471, -0.010258, -0.0079164, 0.03339, -0.015561,
-0.070735, 0.071259, -0.07853, 0.23419, 0.15514, -0.22554, -0.15563,
-0.2383, 0.11294, 0.080936, 0.11703, 0.10016, 0.37724, -0.19612,
-0.36902, 0.15838, 0.42902, 0.22516, -0.063121, -0.43571, 0.18183,
-0.3617, -0.46391, 0.20637, 0.2816, -0.48731, -0.36839, 0.30271,
-0.5318, 0.54845, 0.25838, 0.48192, 0.26152, 0.27122, 0.46684,
0.35331, 0.32918, -0.32729, 0.37552, -0.30201, 0.38484, 0.1445,
-0.092915, 0.057596, -0.023639, 0.039834, 0.037005, 0.013034,
0.013034, 0.045759, 0.079675, 0.033425, -0.034478), mz33_fluxpres = c(-0.042006,
-0.0087272, 0.06984, -0.011245, -0.037788, -0.039248, 0.12145,
0.036873, 0.018546, -0.12384, -0.15012, 0.0097461, 0.065125,
-0.058172, 0.0097461, -0.2329, 0.2206, 0.025187, -0.18074, -0.13482,
0.38717, NA, NA, NA, -0.3004, 0.099023, 0.14356, 0.20071, -0.061669,
-0.030634, -0.099497, -0.15505, -0.018679, -0.15918, -0.02211,
0.21274, 0.0096939, NA, 0.022092, -0.08179, 0.014129, 0.0013332,
-0.15715, -0.031681, -0.079757, -0.050123, -0.02211, 0.057093,
0.018578, -0.06209, 0.035951, 0.074853, -0.053609, -0.064798,
-0.031681, 0.026759, 0.12713, -0.12944, -0.17367, 0.23971, -0.094062,
0.047735, -0.17907, NA, 0.30613, 0.25315, -0.1484, 0.052237,
-0.19804, -0.20399, -0.11382, -0.014459, 0.069707, -0.023175,
0.17591, -0.048833, -0.073961, -0.054771, 0.075225, 0.091559,
0.095253, 0.006905, -0.11751, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, -0.02798, -0.02357, NA, -0.0369305, -0.069905, -0.051909,
-0.011423, -0.02798, -0.0076654, -0.01731, -0.085785, -0.045881,
-0.073195, -0.059641, 0.016971, -0.038851, -0.073209, 0.09013,
-0.027737, 0.085712, 0.0046632, 0.0047102, 0.006642, -0.14191,
0.044176, 0.067735, 0.19165, -0.064684, 0.24074, 0.020631, 0.065106,
0.16284, -0.13833, -0.038045, 0.024796, -0.0983, -0.026942, 0.11902,
-0.041771, -0.041424, -0.031638, -0.013764, -0.0071783, 0.0068984,
0.0038886, 0.014447, 0.016076, 0.083449, -0.036268, 0.15942,
0.055857, -0.071496, -0.043597, -0.11683, -0.067144, -0.077118,
0.20207, -0.13429, 0.25672, -0.062311, 0.14031, 0.02144, 0.17298,
-0.2665, 0.023787, 0.077662, 0.018278, -0.011059, -0.46744, 0.096494,
0.17718, -0.17943, 0.0054086, -0.049722, -0.14853, 0.020634,
0.25956, -0.20501, -0.12736, 0.1216, 0.004753, 0.038314, 0.1007,
-0.047385, 0.039186, -0.17789, 0.10033, 0.0040974, -0.058768,
0.065419, -0.0027768, -0.03266, 0.015962, 0.054895, 0.054895,
0.02658, -0.013271, 0.0048044, -0.032782), mz33_LOD = c(0.0223117323053877,
0.0541775607135507, 0.082674449006193, 0.0415882465765783, 0.0236572787302128,
0.0654475783476629, 0.00670017475008307, 0.179193952441729, 0.0324910158058495,
0.0797241477104371, 0.199426041724631, 0.0323915859718529, 0.115230059785047,
0.0198067315488766, 0.36754666346126, 0.17286517230859, 0.108831508918108,
0.0531632991554672, 0.0694775044807373, 0.0753824825315004, 0.107483914075954,
NA, NA, NA, NA, 0.031688026511206, 0.00621880679233885, 0.0431955590602082,
0.0955172808513367, 0.0132565333827335, 0.00786863388849381,
0.140972077474147, 0.0114671923498637, 0.100475890388493, 0.0235602277185303,
0.0276213207423636, 0.0814629422943953, NA, NA, 0.00451469735339552,
0.0101964882078458, 0.00634715144805993, 0.0157459930860216,
0.0549508698762304, 0.00541759185926812, 0.0258934640165744,
0.0151818178385534, 0.0323043710022612, 0.024664523064889, 0.00302348719373386,
0.017009131027691, 0.0889093085825476, 0.0935467698583111, 0.124585752853753,
0.0551023159090694, 0.118214351939344, 0.0329703452489611, 0.0138411455275956,
0.0779026134152261, 0.175738257370553, 0.055880584089959, 0.0167762258686304,
0.0770566014074383, NA, 0.311916004481698, 0.180038363094246,
0.0220389495611058, 0.10546037010253, 0.25470138697714, 0.0650767720693018,
0.0672524304800603, 0.25684585114711, 0.0348761005047946, 0.129763066893123,
0.0752235005782749, 0.0566570242076309, 0.0128652965841484, 0.0323842554192942,
0.274991904624351, 0.076187522371145, 0.165865422622186, 0.0822539817810682,
0.0682238177775316, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
0.0359155131527491, 0.0294421941091257, NA, 0.0246273891181633,
0.142027180831911, 0.0275415512748983, 0.0428977856056531, 0.0664166594800993,
0.0346097518028181, 0.0026379790338255, 0.0318858290664634, 0.0500516918409702,
0.107409652329421, 0.0369993557350607, 0.0434474160786739, 0.0767210982179528,
0.0212452338250937, 0.0166751418172488, 0.325357847560981, 0.0198527489623322,
0.00120553506581326, 0.108044760274528, 0.0886166168698592, 0.151236824291155,
0.0944417023475604, 0.154505052123048, 0.0845617644368602, 0.00338900975203066,
0.0349132694218515, 0.0856645821082909, 0.0067838739048159, 0.00415101838585496,
0.0904378420163718, 0.0630228386750138, 0.189185766916107, 0.0473574555637392,
0.0491487050636236, 0.0219984680098875, 0.00098555072738666,
0.0117828919757137, 0.0244384740838011, 0.0248797687489187, 0.0102500713873016,
0.00334181979963697, 0.0307465693125519, 0.0117098986050304,
0.00772460455643231, 0.072059402659121, 0.00364228828010136,
0.018023734546035, 0.000412238104608883, 0.194972897289041, 0.0756182011768886,
0.090758141811235, 0.0877547506468884, 0.0309630135095109, 0.0703088928123512,
0.0206242101814821, 0.169622878775546, 0.0126241427480423, 0.11240090281253,
0.0495618499314405, 0.0559778438304748, 0.0738795806161123, 0.0419591691574495,
0.0878153655395156, 0.0530666142944865, 0.193998745395227, 0.290542823385654,
0.192654320230078, 0.0469410398150983, 0.426064607880878, 0.0892025866066576,
0.0831295551722803, 0.0879675398990834, 0.12906949872998, 0.127106575589327,
0.0193462588121813, 0.0283026018768434, 0.21110197897959, 0.0483485400704698,
0.11309665116485, 0.100297019676379, 0.00929155700572325, 0.119284172673319,
0.0184025508039807, 0.0494663131730236, 0.0774242483749083, 0.0252800024110202,
0.0135663528446353, 0.00845782391672908, 0.00135705537077296,
0.00516290307429818, 0.00797948680562485, 0.00797948680562485,
0.00491677467598965, 0.0236492508163107, 0.0179424548096053,
0.00568817125268314)), class = "data.frame", row.names = c("1921",
"1922", "1923", "1924", "1925", "1926", "1927", "1928", "1929",
"1930", "1931", "1932", "1933", "1934", "1935", "1936", "1937",
"1938", "1939", "1940", "1941", "1942", "1943", "1944", "1945",
"1946", "1947", "1948", "1949", "1950", "1951", "1952", "1953",
"1954", "1955", "1956", "1957", "1958", "1959", "1960", "1961",
"1962", "1963", "1964", "1965", "1966", "1967", "1968", "1969",
"1970", "1971", "1972", "1973", "1974", "1975", "1976", "1977",
"1978", "1979", "1980", "1981", "1982", "1983", "1984", "1985",
"1986", "1987", "1988", "1989", "1990", "1991", "1992", "1993",
"1994", "1995", "1996", "1997", "1998", "1999", "2000", "2001",
"2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009",
"2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017",
"2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025",
"2026", "2027", "2028", "2029", "2030", "2031", "2032", "2033",
"2034", "2035", "2036", "2037", "2038", "2039", "2040", "2041",
"2042", "2043", "2044", "2045", "2046", "2047", "2048", "2049",
"2050", "2051", "2052", "2053", "2054", "2055", "2056", "2057",
"2058", "2059", "2060", "2061", "2062", "2063", "2064", "2065",
"2066", "2067", "2068", "2069", "2070", "2071", "2072", "2073",
"2074", "2075", "2076", "2077", "2078", "2079", "2080", "2081",
"2082", "2083", "2084", "2085", "2086", "2087", "2088", "2089",
"2090", "2091", "2092", "2093", "2094", "2095", "2096", "2097",
"2098", "2099", "2100", "2101", "2102", "2103", "2104", "2105",
"2106", "2107", "2108", "2109", "2110", "2111", "2112", "2113",
"2114", "2115", "2116", "2117", "2118", "2119", "2120", "2121",
"2122", "2123", "2124", "2125", "2126", "2127", "2128", "2129",
"2130", "2131", "2132", "2133", "2134", "2135", "2136", "2137",
"2138", "2139", "2140", "2141", "2142", "2143", "2144", "2145",
"2146", "2147", "2148", "2149", "2150", "2151", "2152", "2153",
"2154", "2155", "2156", "21561", "2157", "2158", "2159", "2160"
))
绘图的代码
ggplot(fluxlodgex,aes(x=time))+
geom_line(aes(y=mz33_fluxmax,colour="Methanol (max)"), size = 1.3)+
geom_line(aes(y=mz33_fluxpres,colour="Methanol (pres)"), size = 1.3)+
geom_ribbon(aes(ymin=-mz33_LOD, ymax=mz33_LOD,fill="Methanol (LOD)"),alpha=0.5)+
labs(y = expression(bold(atop("Flux",(nmol~m^bold("-2")~s^bold("-1"))))), x = expression(bold("Date")),colour="Legend")+
scale_colour_manual(name='',values = c("Methanol (max)"="steelblue","Methanol (pres)"="darkolivegreen4"))+
scale_fill_manual(name='',values = ("Methanol (LOD)"="grey70"))+
scale_x_datetime(breaks = date_breaks("12 hours"), labels = date_format("%d-%m-%Y %H:%M"))+
#scale_y_continuous(breaks=c(-0.9,-0.6,-0.3,0,0.3,0.6),imits=c(-0.9, 0.6))+
theme_classic()+theme(legend.position = "top") +
theme(axis.title.y = element_text(margin = margin(r=25),color="black", size=18),
axis.text.y = element_text(color="black",size=14),
axis.title.x = element_text(margin = margin(t=10),color="black", size=18),
axis.text.x = element_text(color="black", size=14),
legend.text = element_text(color = "black", size = 16,face = "bold"))+
geom_hline(yintercept=0, linetype="dashed", color = "black",size=1,alpha=0.8)
如您所见,06:00 和 18:00 有休息时间,而我希望在 00:00 和 12:00 休息
答:
0赞
Tony Ladson
12/17/2019
#1
您提供中断向量以scale_x_datetime
library(lubridate)
# Generate some times
t_seq <- seq(from = ymd_hms('2000-01-01 12:00:00'), to = ymd_hms('2000-01-03 15:00:00'), length.out = 50)
# Create a sequence of the required breaks
t_breaks = seq(from = ymd_hms('2000-01-01 00:00:00'), to = ymd_hms('2000-01-04 00:00:00'), by = '12 hours')
tibble(tt = t_seq, y = runif(50)) %>%
ggplot(aes(tt, y)) +
geom_line() +
scale_x_datetime(breaks = t_breaks)
上一个:如何计算 R 中的均方根偏差?
评论