ggplot - bar chart with multiple y-variables - r

I'm trying to create a bar chart with three y-variables (Total_us_received, Total_us_required, Total_us_received_from.CERF) using ggplot2. All three y-variables are measured on the same scale (US$).
This far I've created a bar chart with Total_us_received as the y-variables and Disaster_category as the x-variable using this code:
ggplot(Template.2006.2017.text,
aes(Disaster_category, y=Total_US_received)) +
geom_bar(stat ="identity", fill="lightblue") +
coord_flip()
However, every attempt I've made to include the other two y-variables into the graph have failed. How can I include the other two variables into the graph?
A follow-up questions: Can I make the graph show the mean of every category of the x-variable (Disaster_subtype) without NA:s instead of the total sum?
Here's my data in dput (compressed version):
structure(list(Disaster_category = structure(c(1L, 15L, 17L,
15L, 5L, 8L, 13L, 8L, 2L, 8L, 2L, 3L, 8L, 2L, 8L, 2L, 10L, 5L,
7L, 8L, 15L, 2L, 8L, 2L, 15L, 15L, 8L, 15L, 2L, 17L, 2L, 7L,
2L, 8L, 2L, 3L, 2L, 8L, 8L, 2L, 8L, 17L, 2L, 3L, 8L, 8L, 2L,
8L, 8L, 8L, 2L, 8L, 3L, 2L, 3L, 2L, 8L, 2L, 3L, 8L, 2L, 8L, 2L,
15L, 5L, 8L, 13L, 8L, 15L, 2L, 8L, 2L, 3L, 2L, 3L, 15L, 8L, 3L,
2L, 3L, 8L, 2L, 3L, 2L, 8L, 2L, 8L, 15L, 2L, 8L, 8L, 5L, 2L,
8L, 2L, 3L, 2L, 17L, 2L, 17L, 2L, 4L, 5L, 8L, 8L, 2L, 8L, 15L,
2L, 15L, 15L, 7L, 2L, 8L, 2L, 15L, 15L, 7L, 8L, 17L, 2L, 15L,
8L, 2L, 17L, 2L, 3L, 8L, 2L, 5L, 2L, 8L, 2L, 8L, 8L, 15L, 2L,
8L, 2L, 15L, 8L, 2L, 15L, 8L, 7L, 8L, 15L, 2L, 8L, 8L, 7L, 13L,
8L, 2L, 8L, 2L, 8L, 8L, 3L, 2L, 13L, 2L, 3L, 8L, 2L, 15L, 15L,
8L, 15L, 2L, 5L, 3L, 3L, 8L, 3L, 2L, 8L, 8L, 3L, 2L, 8L, 2L,
15L, 2L, 17L, 2L, 5L, 2L, 8L, 2L, 15L, 2L, 3L, 8L, 8L, 2L, 8L,
8L, 2L, 3L), .Label = c("", " ", "Disease", "Disease related disaster",
"Drought", "Drought & storm", "Extreme temperature / fire", "Flood",
"Flood & drought", "Insect infestation", "Insect infestation & drought",
"Landslide & flood", "Landslide / mudslide", "Other", "Storm",
"Storm & flood", "Winter"), class = "factor"), Total_US_received_from.CERF = c(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, 678307.8333,
678307.8333, 678307.8333, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1110469.5, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, 1905355, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2493246,
2493246, 2493246, 2493246, 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, 333333.3333, 333333.3333, 333333.3333, 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, 9365420,
NA, NA, 14321419, 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),
Total_US_received = c(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, 15507224.5, 15507224.5, 15507224.5,
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, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 333333.3333, 333333.3333,
333333.3333, 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, NA, NA, NA, NA, NA), Total_US_required = c(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, 20502064.83, 20502064.83, 20502064.83, 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, 3070192, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 49955895.25, 49955895.25, 49955895.25, 49955895.25,
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, 333333.3333,
333333.3333, 333333.3333, 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, NA, NA, NA, NA, NA)), row.names = c(NA,
200L), class = "data.frame")

You can transform you data into long format and then plot them:
library(tidyr)
library(ggplot2)
my_data %>%
gather(Total_US_category, Total_US, Total_US_received, Total_US_required, Total_US_received_from.CERF) %>%
ggplot(aes(Disaster_category, y = Total_US, fill = Total_US_category)) +
geom_col(position = position_dodge()) +
coord_flip()
If you want to plot the mean-value per disaster you can first summarize the data with dplyr:
library(dplyr)
my_data_sum <- my_data %>%
gather(Total_US_category, Total_US, Total_US_received, Total_US_required, Total_US_received_from.CERF) %>%
group_by(Disaster_category, Total_US_category) %>%
summarize(Total_US_mean = mean(Total_US, na.rm = T))
my_data_sum
# A tibble: 33 x 3
# Groups: Disaster_category [?]
# Disaster_category Total_US_category Total_US_mean
# <fct> <chr> <dbl>
# 1 "" Total_US_received NaN
# 2 "" Total_US_received_from.CERF NaN
# 3 "" Total_US_required NaN
# 4 " " Total_US_received NaN
# 5 " " Total_US_received_from.CERF NaN
# 6 " " Total_US_required NaN
# 7 Disease Total_US_received NaN
# 8 Disease Total_US_received_from.CERF NaN
# 9 Disease Total_US_required NaN
# 10 Disease related disaster Total_US_received NaN
# ... with 23 more rows
And then plot the data:
ggplot(my_data_sum, aes(Disaster_category, y = Total_US_mean, fill = Total_US_category)) +
geom_col(position = position_dodge()) +
coord_flip()

Related

Normalisation and simplification of a plot

I'd like to make a graph that captures the impact of the intervention. As you can see in the plot below, the y-axis of my figure has different scales (e.g. values), making comparison difficult. Is it possible to normalise the y axis (0 and 1) on both figures? Is it also possible to create a plot that shows the intervention rate per day? For Monday, for example, display a black line without SEDM and a red line with
Sample code:
df %>%
group_by(Day, Time = ceiling_date(as.POSIXct(Time), '10 minutes')) %>%
summarise(kW= mean(kW)) %>%
ungroup
df$Day<- factor(df$Day,levels = c( "Monday", "Tuesday","Wednesday","Thursday","Friday","Saturday", "Sunday"))
#as.POSIXct(df$Time,format="%H:%M")
ggplot(transform(df, Time = as.POSIXct(Time)),
aes(x = Time,y =kW, group=Day)) +
geom_smooth(aes(color=Day)) +
#geom_boxplot()+
labs(x="", y="kW", title="Monthly electricity consumption without SEDM (House 3)") +
scale_x_datetime(date_labels = '%H:%M', date_breaks = '2 hours',expand = expansion(mult = c(0, 0)))+
#facet_wrap(~Day, ncol=1 )+
theme_bw()+
theme(axis.text.x = element_text(angle = 90, hjust = 1,family="Times", face="bold", size=12, color="black"),
axis.title.x = element_text(family="Times", face="bold", size=16, color="black"),
axis.text.y = element_text(family="Times", face="bold", size=12, color="black"),
axis.title.y = element_text(family="Times", face="bold", size=16, color="black"),
strip.text = element_text(size=15, face="bold"),
plot.title = element_text(size=20, face="bold"))+
theme(legend.title = element_blank(),
legend.text = element_text(family="Times", color = "black", size = 16,face="bold"),
legend.position="top",
legend.box = "horizontal",
plot.title = element_text(hjust = 0.5))+
guides(fill = guide_legend(nrow = 1))
Plot:
Data:
#for the first plot (without SEDM) first 300
structure(list(structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L), .Label = c("Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday", "Sunday"), class = "factor"), structure(c(41220,
41280, 41340, 41400, 41460, 41520, 41580, 41640, 41700, 41760,
41820, 41880, 41940, 42000, 42060, 42120, 42180, 42240, 42300,
42360, 42420, 42480, 42540, 42600, 42660, 42720, 42780, 42840,
42900, 42960, 43020, 43080, 43140, 43200, 43260, 43320, 43380,
43440, 43500, 43560, 43620, 43680, 43740, 43800, 43860, 43920,
43980, 44040, 44100, 44160, 44220, 44280, 44340, 44400, 44460,
44520, 44580, 44640, 44700, 44760, 44820, 44880, 44940, 45000,
45060, 45120, 45180, 45240, 45300, 45360, 45420, 45480, 45540,
45600, 45660, 45720, 45780, 45840, 45900, 45960, 46020, 46080,
46140, 46200, 46260, 46320, 46380, 46440, 46500, 46560, 46620,
46680, 46740, 46800, 46860, 46920, 46980, 47040, 47100, 47160,
47220, 47280, 47340, 47400, 47460, 47520, 47580, 47640, 47700,
47760, 47820, 47880, 47940, 48000, 48060, 48120, 48180, 48240,
48300, 48360, 48420, 48480, 48540, 48600, 48660, 48720, 48780,
48840, 48900, 48960, 49020, 49080, 49140, 49200, 49260, 49320,
49380, 49440, 49500, 49560, 49620, 49680, 49740, 49800, 49860,
49920, 49980, 50040, 50100, 50160, 50220, 50280, 50340, 50400,
50460, 50520, 50580, 50640, 50700, 50760, 50820, 50880, 50940,
51000, 51060, 51120, 51180, 51240, 51300, 51360, 51420, 51480,
51540, 51600, 51660, 51720, 51780, 51840, 51900, 51960, 52020,
52080, 52140, 52200, 52260, 52320, 52380, 52440, 52500, 52560,
52620, 52680, 52740, 52800, 52860, 52920, 52980, 53040, 53100,
53160, 53220, 53280, 53340, 53400, 53460, 53520, 53580, 53640,
53700, 53760, 53820, 53880, 53940, 54000, 54060, 54120, 54180,
54240, 54300, 54360, 54420, 54480, 54540, 54600, 54660, 54720,
54780, 54840, 54900, 54960, 55020, 55080, 55140, 55200, 55260,
55320, 55380, 55440, 55500, 55560, 55620, 55680, 55740, 55800,
55860, 55920, 55980, 56040, 56100, 56160, 56220, 56280, 56340,
56400, 56460, 56520, 56580, 56640, 56700, 56760, 56820, 56880,
56940, 57000, 57060, 57120, 57180, 57240, 57300, 57360, 57420,
57480, 57540, 57600, 57660, 57720, 57780, 57840, 57900, 57960,
58020, 58080, 58140, 58200, 58260, 58320, 58380, 58440, 58500,
58560, 58620, 58680, 58740, 58800, 58860, 58920, 58980, 59040,
59100, 59160), class = c("hms", "difftime"), units = "secs"),
c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 2.951667, 41.055, 10.733333, 2.951667, 3.22, 4.83,
3.22, 3.22, 3.22, 2.951667, 3.488333, 13.416667, 3.22, 3.22,
13.416667, 43.738333, 3.22, 3.22, 3.22, 3.488333, 3.22, 3.22,
3.488333, 2.951667, 11.806667, 3.756667, 45.348333, 4.025,
4.025, 4.293333, 4.83, 4.83, 15.026667, 4.561667, 46.153333,
4.025, 4.025, 3.756667, 4.025, 4.293333, 44.275, 44.811667,
3.756667, 3.756667, 3.756667, 3.756667, 3.756667, 3.756667,
3.756667, 3.756667, 3.756667, 44.006667, 3.756667, 3.756667,
3.756667, 3.488333, 3.756667, 3.756667, 44.006667, 44.006667,
3.756667, 3.756667, 4.293333, 3.756667, 4.293333, 4.561667,
4.83, 4.025, 4.025, 24.418333, 4.561667, 4.025, 4.293333,
32.736667, 9.928333, 1.073333, 1.341667, 1.073333, 0.805,
20.93, 41.591667, 0.805, 0.805, 1.073333, 1.341667, 1.61,
2.415, 43.201667), c(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, 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, 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, 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, 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, NA, NA, NA, NA, NA), c(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, 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, 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, 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, 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, NA, NA, NA, NA, NA), c(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, 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, 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, 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, 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, NA, NA, NA, NA, NA), c(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, 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, 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, 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, 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, NA, NA, NA, NA, NA), c(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, 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, 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, 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, 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, NA, NA, NA, NA, NA), c(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, 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, 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, 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, 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, NA, NA, NA, NA, NA)), .Names = c("Day",
"Time", "kW", NA, NA, NA, NA, NA, NA), row.names = c(NA, 300L
), class = "data.frame")
#for the second plot (with SEDM) first 500
structure(list(Day = structure(c(5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L), .Label = c("Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday", "Sunday"), class = "factor"),
Time = structure(c(43380, 43440, 43500, 43560, 43620, 43680,
43740, 43800, 43860, 43920, 65700, 65760, 65820, 65880, 65940,
66000, 66060, 66120, 66180, 66240, 66300, 66360, 66420, 66480,
66540, 66600, 66660, 66720, 66780, 66840, 66900, 66960, 67020,
67080, 67140, 67200, 67260, 67320, 67380, 67440, 67500, 67560,
67620, 67680, 67740, 67800, 67860, 67920, 67980, 68040, 68100,
68160, 68220, 68280, 68340, 68400, 68460, 68520, 68580, 68640,
68700, 68760, 68820, 68880, 68940, 69000, 69060, 69120, 69180,
69240, 69300, 69360, 69420, 69480, 69540, 69600, 69660, 69720,
69780, 69840, 69900, 69960, 70020, 70080, 70140, 70200, 70260,
70320, 70380, 70440, 70500, 70560, 70620, 70680, 70740, 70800,
70860, 70920, 70980, 71040, 71100, 71160, 71220, 71280, 71340,
71400, 71460, 71520, 71580, 71640, 71700, 71760, 71820, 71880,
71940, 72000, 72060, 72120, 72180, 72240, 72300, 72360, 72420,
72480, 72540, 72600, 72660, 72720, 72780, 72840, 72900, 72960,
73020, 73080, 73140, 73200, 73260, 73320, 73380, 73440, 73500,
73560, 73620, 73680, 73740, 73800, 73860, 73920, 73980, 74040,
74100, 74160, 74220, 74280, 74340, 74400, 74460, 74520, 74580,
74640, 74700, 74760, 74820, 74880, 74940, 75000, 75060, 75120,
75180, 75240, 75300, 75360, 75420, 75480, 75540, 75600, 75660,
75720, 75780, 75840, 75900, 75960, 76020, 76080, 76140, 76200,
76260, 76320, 76380, 76440, 76500, 76560, 76620, 76680, 76740,
76800, 76860, 76920, 76980, 77040, 77100, 77160, 77220, 77280,
77340, 77400, 77460, 77520, 77580, 77640, 77700, 77760, 77820,
77880, 77940, 78000, 78060, 78120, 78180, 78240, 78300, 78360,
78420, 78480, 78540, 78600, 78660, 78720, 78780, 78840, 78900,
78960, 79020, 79080, 79140, 79200, 79260, 79320, 79380, 79440,
79500, 79560, 79620, 79680, 79740, 79800, 79860, 79920, 79980,
80040, 80100, 80160, 80220, 80280, 80340, 80400, 80460, 80520,
80580, 80640, 80700, 80760, 80820, 80880, 80940, 81000, 81060,
81120, 81180, 81240, 81300, 81360, 81420, 81480, 81540, 81600,
81660, 81720, 81780, 81840, 81900, 81960, 82020, 82080, 82140,
82200, 82260, 82320, 82380, 82440, 82500, 82560, 82620, 82680,
82740, 82800, 82860, 82920, 82980, 83040), class = c("hms",
"difftime"), units = "secs"), kW = c(0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 6.976667, 6.976667, 7.245, 7.245, 7.245, 7.245,
7.245, 7.245, 7.245, 7.245, 7.245, 7.245, 7.245, 7.245, 7.245,
7.245, 7.245, 7.245, 7.245, 7.245, 13.416667, 30.053333,
4.025, 4.025, 4.025, 4.025, 42.396667, 41.591667, 4.025,
4.025, 4.025, 4.025, 4.025, 4.025, 4.293333, 4.025, 4.025,
4.293333, 4.025, 4.025, 23.881667, 23.881667, 4.293333, 4.025,
4.293333, 42.665, 43.201667, 29.785, 4.293333, 16.636667,
4.025, 4.025, 4.025, 4.025, 4.025, 4.025, 4.293333, 5.903333,
5.635, 5.903333, 31.126667, 5.635, 5.635, 5.635, 5.635, 5.635,
5.903333, 5.635, 5.635, 5.635, 39.176667, 60.106667, 75.67,
75.67, 76.475, 30.321667, 6.976667, 7.781667, 7.781667, 39.713333,
39.713333, 39.713333, 31.663333, 31.663333, 31.663333, 18.515,
31.663333, 37.298333, 49.91, 59.301667, 24.15, 28.711667,
30.59, 35.956667, 38.64, 41.055, 24.955, 42.665, 52.325,
43.47, 31.395, 50.983333, 52.325, 40.518333, 44.543333, 50.178333,
41.591667, 50.715, 54.74, 50.983333, 65.741667, 48.031667,
41.591667, 50.715, 28.98, 5.366667, 7.781667, 28.98, 16.368333,
4.561667, 4.561667, 2.683333, 2.951667, 2.951667, 2.951667,
2.951667, 2.951667, 2.951667, 2.951667, 2.951667, 2.951667,
2.951667, 2.951667, 2.951667, 2.951667, 2.951667, 2.951667,
2.951667, 2.951667, 2.951667, 2.951667, 2.951667, 2.951667,
2.951667, 2.951667, 2.951667, 2.951667, 2.951667, 2.951667,
2.683333, 2.683333, 2.415, 2.415, 3.756667, 3.756667, 3.756667,
4.293333, 5.366667, 5.635, 5.366667, 5.366667, 4.83, 4.83,
4.561667, 3.22, 2.951667, 2.951667, 3.22, 3.22, 3.22, 3.22,
2.951667, 2.951667, 2.951667, 2.951667, 2.951667, 2.951667,
2.951667, 2.951667, 2.951667, 2.951667, 2.951667, 2.951667,
2.951667, 2.951667, 2.951667, 2.951667, 2.951667, 2.951667,
2.951667, 2.951667, 2.415, 2.415, 2.415, 2.415, 2.146667,
2.415, 2.146667, 2.415, 2.415, 2.415, 2.146667, 2.415, 2.415,
2.415, 2.415, 2.951667, 2.415, 2.415, 2.415, 2.415, 2.415,
2.415, 2.415, 2.415, 2.415, 2.415, 2.415, 2.415, 2.415, 2.415,
2.415, 2.415, 2.415, 2.415, 2.415, 2.683333, 2.683333, 2.683333,
2.683333, 2.683333, 2.415, 2.683333, 3.488333, 2.951667,
3.756667, 3.756667, 3.488333, 3.488333, 4.025, 4.025, 2.415,
2.415, 1.878333, 1.878333, 2.146667, 2.415, 1.878333, 2.146667,
2.146667, 2.146667, 1.878333, 1.878333, 1.878333, 1.878333,
1.878333, 1.878333, 1.878333, 1.878333, 1.878333, 1.878333,
1.878333, 1.878333, 1.878333, 3.488333, 3.22, 2.951667, 2.683333,
2.951667, 2.951667, 2.951667, 2.951667, 2.951667, 2.951667,
2.951667, 2.951667, 2.951667, 2.951667, 2.951667, 2.951667,
2.951667, 2.951667, 2.951667, 2.951667, 2.951667, 2.683333,
2.951667, 2.951667, 2.951667, 2.683333)), row.names = c(NA,
300L), class = "data.frame")
You could scale your "kW" variable with min and max like this:
library(ggplot2)
df$Day<- factor(df$Day,levels = c( "Monday", "Tuesday","Wednesday","Thursday","Friday","Saturday", "Sunday"))
#as.POSIXct(df$Time,format="%H:%M")
maxs <- max(df$kW)
mins <- min(df$kW)
df$kW <- scale(df$kW, center = mins, scale = maxs-mins)
ggplot(transform(df, Time = as.POSIXct(Time)),
aes(x = Time,y =kW, group=Day)) +
geom_smooth(aes(color=Day)) +
#geom_boxplot()+
labs(x="", y="kW", title="Monthly electricity consumption without SEDM (House 3)") +
scale_x_datetime(date_labels = '%H:%M', date_breaks = '2 hours',expand = expansion(mult = c(0, 0)))+
#facet_wrap(~Day, ncol=1 )+
theme_bw()+
theme(axis.text.x = element_text(angle = 90, hjust = 1,family="Times", face="bold", size=12, color="black"),
axis.title.x = element_text(family="Times", face="bold", size=16, color="black"),
axis.text.y = element_text(family="Times", face="bold", size=12, color="black"),
axis.title.y = element_text(family="Times", face="bold", size=16, color="black"),
strip.text = element_text(size=15, face="bold"),
plot.title = element_text(size=20, face="bold"))+
theme(legend.title = element_blank(),
legend.text = element_text(family="Times", color = "black", size = 16,face="bold"),
legend.position="top",
legend.box = "horizontal",
plot.title = element_text(hjust = 0.5))+
guides(fill = guide_legend(nrow = 1))
Output:

How to group multiple variables using r_bind and select? [duplicate]

This question already has answers here:
Reshaping data.frame from wide to long format
(8 answers)
Closed 12 months ago.
My data look like this:
dput(srkw.dat)
structure(list(year = c(1962L, 1976L, 1981L, 1981L, 1982L,
1987L, 1989L, 1990L, 1992L, 1992L, 1992L, 1994L, 1998L, 2003L,
2003L, 2003L, 2003L, 2004L, 2004L, 2004L, 2005L, 2005L, 2005L,
2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2006L, 2006L,
2006L, 2006L, 2006L, 2006L, 2007L, 2007L, 2007L, 2008L, 2008L,
2008L, 2009L, 2009L, 2009L, 2010L, 2010L, 2010L, 2011L, 2011L,
2013L, 2013L, 2013L, 2014L, 2014L, 2014L, 2014L, 2014L, 2015L,
2015L, 2015L, 2015L, 2015L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2017L, 2018L, 2018L, 2018L, 2019L, 2020L, 2020L, 2020L,
2020L), whaleid1 = c("Lx", "Lx", "Lx", "Lx", "Lx", "L5",
"Lx", "Kx", "L5", "Lx", "L21", "L5", "Lx", "Jx", "L5", "L7",
"Jx", "L21", "L54", "Lx", "Jx", "J27", "J16", "J11", "Jx",
"L5", "L5", "J30", "L95", "Lx", "Jx", "J35", "K40", "Lx",
"L12", "Jx", "L106", "L21", "Kx", "L83", "L83", "L57", "J31",
"J27", "J30", "L55", "L22", "K36", "Jx", "L72", "K21", NA,
"K16", "J16", "J35", "L72", "J36", "L22", "K22", "K22", "L77",
"J47", "Jx", "J40", "L119", "J2", "J35", "L103", "L77", "L87",
"J39", "J22", "J38", "L115", "J31", NA, "J37", "Lx"), whalesex1 = c(NA,
0L, NA, NA, 0L, 0L, NA, NA, 0L, 0L, 0L, 0L, 1L, NA, 0L, 0L,
NA, 0L, 0L, NA, NA, 1L, 0L, 0L, NA, 0L, 0L, 1L, 1L, NA, NA,
0L, 0L, NA, 0L, NA, 1L, 0L, NA, 0L, 0L, 1L, 0L, 1L, 1L, 0L,
0L, 0L, NA, 0L, 1L, NA, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
1L, NA, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, NA,
0L, NA), whaleage1 = c(NA, NA, NA, NA, NA, 23L, NA, NA, 28L,
NA, 42L, 30L, NA, NA, 39L, 42L, NA, 54L, 27L, NA, NA, 14L,
33L, 33L, NA, 41L, 41L, 10L, 9L, NA, NA, 8L, 43L, NA, 73L,
NA, 2L, 57L, NA, 18L, 18L, 31L, 14L, 18L, 14L, 33L, 39L,
7L, NA, 25L, 27L, NA, 28L, 42L, 16L, 28L, 15L, 43L, 28L,
28L, 28L, 5L, NA, 12L, 4L, 60L, 18L, 13L, 29L, 24L, 15L,
23L, 15L, 9L, 25L, NA, 19L, NA), whaleid2 = c("Lx", "Lx",
"Lx", "Lx", "Lx", "L58", "Lx", "Kx", "L58", "Lx", "Lx", "L58",
NA, "Jx", "L73", "L57", "Jx", "L47", "L100", "Lx", NA, "J31",
"J26", "J27", "Jx", "L73", "L73", "J31", "L72", "Lx", "Jx",
"J37", "K16", "Lx", "L41", NA, "L41", "L26", NA, "L110",
"L110", NA, "J36", "J31", "Kx", NA, "L94", "K42", NA, "Kx",
"K25", NA, NA, "J26", "J47", "L105", "J41", "L94", NA, "K33",
"L119", NA, NA, NA, NA, NA, "J47", "L109", "L119", "Jx",
NA, "J40", NA, NA, "J56", NA, "Jx", "Lx"), whalesex2 = c(NA,
NA, NA, NA, NA, 1L, NA, NA, 1L, 0L, NA, 1L, NA, NA, 1L, 1L,
NA, 0L, 1L, NA, NA, 0L, 1L, 1L, NA, 1L, 1L, 0L, 0L, NA, NA,
0L, 0L, NA, 1L, NA, 1L, 0L, NA, 1L, 1L, NA, 0L, 0L, NA, NA,
0L, 1L, NA, NA, 1L, NA, NA, 1L, 1L, 1L, 0L, 0L, NA, 1L, 0L,
NA, NA, NA, NA, NA, 1L, 1L, 0L, NA, NA, 0L, NA, NA, 0L, NA,
NA, NA), whaleage2 = c(NA, NA, NA, NA, NA, 7L, NA, NA, 12L,
NA, NA, 14L, NA, NA, 17L, 26L, NA, 30L, 3L, NA, NA, 10L,
14L, 14L, NA, 19L, 19L, 10L, 19L, NA, NA, 5L, 21L, NA, 29L,
NA, 30L, 51L, NA, 1L, 1L, NA, 10L, 14L, NA, NA, 15L, 2L,
NA, NA, 22L, NA, NA, 23L, 4L, 10L, 9L, 19L, NA, 14L, 3L,
NA, NA, NA, NA, NA, 6L, 9L, 4L, NA, NA, 14L, NA, NA, 1L,
NA, NA, NA), whaleid3 = c(NA, NA, NA, NA, "Lx", "L73", "Lx",
"Kx", "L73", "Lx", NA, "L73", NA, "Jx", NA, NA, NA, "Lx",
NA, NA, NA, "Jx", "J36", "J39", NA, "L67", "L67", NA, NA,
NA, NA, "J40", "K35", "Lx", "L77", NA, "L57", "L47", NA,
"L47", "L91", NA, "J39", "J39", NA, NA, "L113", NA, NA, NA,
"K26", NA, NA, "J36", NA, NA, "J42", "L113", NA, NA, NA,
NA, NA, NA, NA, NA, "L87", "L123", "L113", "Jx", NA, "J49",
NA, NA, "J36", NA, NA, "Lx"), whalesex3 = c(NA, NA, NA, NA,
0L, 1L, NA, NA, 1L, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 0L, 1L, NA, 0L, 0L, NA, NA, NA, NA, 0L, 1L, NA,
0L, NA, 1L, 0L, NA, 0L, 0L, NA, 1L, 1L, NA, NA, 0L, NA, NA,
NA, 1L, NA, NA, 0L, NA, NA, 0L, 0L, NA, NA, NA, NA, NA, NA,
NA, NA, 1L, 1L, 0L, 0L, NA, 1L, NA, NA, 0L, NA, NA, NA),
whaleage3 = c(NA, NA, NA, NA, NA, 1L, NA, NA, 6L, NA, NA,
8L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 6L, 2L, NA, 20L,
20L, NA, NA, NA, NA, 2L, 4L, NA, 19L, NA, 30L, 33L, NA, 34L,
13L, NA, 6L, 6L, NA, NA, 1L, NA, NA, NA, 20L, NA, NA, 15L,
NA, NA, 7L, 5L, NA, NA, NA, NA, NA, NA, NA, NA, 24L, 1L,
7L, NA, NA, 6L, NA, NA, 21L, NA, NA, NA), whaleid4 = c(NA,
NA, NA, NA, "Lx", NA, "Lx", "Kx", NA, "Lx", NA, NA, NA, "Jx",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "L101", "L101",
NA, NA, NA, NA, NA, NA, "Lx", "L94", NA, "L82", "Lx", NA,
"L111", NA, NA, "Kx", NA, NA, NA, NA, NA, NA, NA, "K35",
NA, NA, "J42", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, "Jx", NA, NA, NA, NA, "J47", NA, NA, "Lx"
), whalesex4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, 1L,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
1L, 1L, NA, NA, NA, NA, NA, NA, NA, 0L, NA, 0L, NA, NA, 0L,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA, 0L, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 1L, NA, NA, NA), whaleage4 = c(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, 3L, 3L, NA, NA, NA, NA, NA, NA,
NA, 11L, NA, 17L, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 11L, NA, NA, 7L, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 10L,
NA, NA, NA), whaleid5 = c(NA, NA, NA, NA, NA, NA, "Lx", "Kx",
NA, NA, NA, NA, NA, "Jx", NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "L86",
NA, NA, "L91", 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, "Jx", NA, NA, NA, NA, "J49", NA, NA, NA), whalesex5 = c(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, 0L, NA, NA, 0L, 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, 1L, NA,
NA, NA), whaleage5 = c(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, 16L, NA,
NA, 13L, 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, 8L, NA, NA, NA), whaleid6 = c(NA,
NA, NA, NA, NA, NA, "Lx", "Kx", NA, NA, NA, NA, NA, "Jx",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, "L95", 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, "Jx", NA, NA,
NA, NA, NA, NA, NA, NA), whalesex6 = c(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, 1L, 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), whaleage6 = c(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, 11L, 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), whaleid7 = c(NA, NA, NA, NA, NA, NA, "Lx", "Kx",
NA, NA, NA, NA, NA, "Jx", NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "L77",
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, "Jx", NA, NA, NA, NA, NA, NA, NA, NA), whalesex7 = c(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, 0L, 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), whaleage7 = c(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, 20L, 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), whaleid8 = c(NA,
NA, NA, NA, NA, NA, "Lx", "Kx", NA, NA, NA, NA, NA, "Jx",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, "L94", 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, "Jx", NA, NA,
NA, NA, NA, NA, NA, NA), whalesex8 = c(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, 0L, 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), whaleage8 = c(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, 12L, 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), event.id = 1:78), row.names = c(NA, -78L), class = "data.frame")
I want to use r_bind to group by whale IDs, while ascribing each whale's respective age and sex to its ID. I got this far:
events.by.id =
rbind(
srkw.dat %>%
select(event.id, year, id = whaleid1),
srkw.dat %>%
select(event.id, year, id = whaleid2),
srkw.dat %>%
select(event.id, year, id = whaleid3),
srkw.dat %>%
select(event.id, year, id = whaleid4),
srkw.dat %>%
select(event.id, year, id = whaleid5),
srkw.dat %>%
select(event.id, year, id = whaleid6),
srkw.dat %>%
select(event.id, year, id = whaleid7)
) %>%
filter(!is.na(id))
But I wasn't sure what extra syntax is needed to link each whale's age and sex to its ID?
Additionally, after that is done, is there an elegant way to selectively remove the whale IDs (and their ascribed sexes/ages) that are Jx, Lx, Kx, etc?
Thanks so much!
I think it would help if you get data in long format using pivot_longer with id, sex and age as separate columns. This might be simpler than your attempt.
res <- tidyr::pivot_longer(srkw.dat,
cols = -year,
names_to = c('.value', 'num'),
names_pattern = 'whale(.*?)(\\d+)',
values_drop_na = TRUE)
res
# A tibble: 211 x 5
# year num id sex age
# <int> <chr> <chr> <int> <int>
# 1 1962 1 Lx NA NA
# 2 1962 2 Lx NA NA
# 3 1976 1 Lx 0 NA
# 4 1976 2 Lx NA NA
# 5 1981 1 Lx NA NA
# 6 1981 2 Lx NA NA
# 7 1981 1 Lx NA NA
# 8 1981 2 Lx NA NA
# 9 1982 1 Lx 0 NA
#10 1982 2 Lx NA NA
# … with 201 more rows
It would be easy now to filter data with res. For example, to drop id's c('Jx', 'Lx', 'Kx') you may do -
res %>% filter(!id %in% c('Jx', 'Lx', 'Kx'))
What you want to do is pivot your data. You've actually kind of developed your own version of tidyr::pivot_longer() -- but it's easier with Hadley's version.
To your second question, you can use stringr::str_ends() to filter by ids ending in "x".
library(tidyverse)
srkw.dat_long <- srkw.dat %>%
pivot_longer(
cols = starts_with("whale"),
names_to = c(".value", NA),
names_pattern = "whale(\\D+)(\\d+)"
) %>%
filter(!(is.na(id) | str_ends(id, "x")))
# # A tibble: 132 x 5
# year event.id id sex age
# <int> <int> <chr> <int> <int>
# 1 1987 6 L5 0 23
# 2 1987 6 L58 1 7
# 3 1987 6 L73 1 1
# 4 1992 9 L5 0 28
# 5 1992 9 L58 1 12
# 6 1992 9 L73 1 6
# 7 1992 11 L21 0 42
# 8 1994 12 L5 0 30
# 9 1994 12 L58 1 14
# 10 1994 12 L73 1 8
# # ... with 122 more rows

How to plot a cumulative frequency line graph using ggplot2?

Forgive me if this question is self explanatory, but I am still trying to get to grips with some more of R's features.
I am currently trying to use R to replot a cumulative frequency with lines I plotted in excel.
I think a lot of my problems are coming from having a lot of cells with no data, as I keep getting the warning:
Warning messages:
1: Removed 81 row(s) containing missing values (geom_path).
2: Removed 81 row(s) containing missing values (geom_path).
3: Removed 81 row(s) containing missing values (geom_path).
This is because each column represents a recording frequency witch witch only occurred for 21 days, with a 20 day rest period between each recording period.
I have tried using geom_ steps() and geom_points() but I end up with these:
When I use the geom_line() function the axis are created but nothing is plotted.
The dates on the x axis also look horrendous, I tried using the code + theme(axis.text.x = element_text(angle = 90)) to rotate the labels but it still looks terrible, I am not sure if its just to many dates.
Here is the code I have been trying to get to work for the various geom functions:
ggplot() +
geom_point(aes(x = Date, y = d2s1, group = 1), data = cf) +
geom_point(aes(x = Date, y = d20s1, group = 1), data = cf) +
geom_point(aes(x = Date, y = d10s1, group = 1), data = cf) +
theme(axis.text.x = element_text(angle = 90))
ggplot() +
geom_step(aes(x = Date, y = d2s1, group = 1), data = cf) +
geom_step(aes(x = Date, y = d20s1, group = 1), data = cf) +
geom_step(aes(x = Date, y = d10s1, group = 1), data = cf) +
theme(axis.text.x = element_text(angle = 90))
ggplot() +
geom_line(aes(x = Date, y = d2s1, group = 1), data = cf) +
geom_line(aes(x = Date, y = d20s1, group = 1), data = cf) +
geom_line(aes(x = Date, y = d10s1, group = 1), data = cf) +
theme(axis.text.x = element_text(angle = 90))
I hope this all makes sense and thank you all in advance for any help you can provide!
I read in the data using read.csv("cf.csv").
I have attached the output of dput(cf) below.
structure(list(Date = c("08/11/2019", "09/11/2019", "10/11/2019",
"11/11/2019", "12/11/2019", "13/11/2019", "14/11/2019", "15/11/2019",
"16/11/2019", "17/11/2019", "18/11/2019", "19/11/2019", "20/11/2019",
"21/11/2019", "22/11/2019", "23/11/2019", "24/11/2019", "25/11/2019",
"26/11/2019", "27/11/2019", "28/11/2019", "29/11/2019", "30/11/2019",
"01/12/2019", "02/12/2019", "03/12/2019", "04/12/2019", "05/12/2019",
"06/12/2019", "07/12/2019", "08/12/2019", "09/12/2019", "10/12/2019",
"11/12/2019", "12/12/2019", "13/12/2019", "14/12/2019", "15/12/2019",
"16/12/2019", "17/12/2019", "18/12/2019", "19/12/2019", "20/12/2019",
"21/12/2019", "22/12/2019", "23/12/2019", "24/12/2019", "25/12/2019",
"26/12/2019", "27/12/2019", "28/12/2019", "29/12/2019", "30/12/2019",
"31/12/2019", "01/01/2020", "02/01/2020", "03/01/2020", "04/01/2020",
"05/01/2020", "06/01/2020", "07/01/2020", "08/01/2020", "09/01/2020",
"10/01/2020", "11/01/2020", "12/01/2020", "13/01/2020", "14/01/2020",
"15/01/2020", "16/01/2020", "17/01/2020", "18/01/2020", "19/01/2020",
"20/01/2020", "21/01/2020", "22/01/2020", "23/01/2020", "24/01/2020",
"25/01/2020", "26/01/2020", "27/01/2020", "28/01/2020", "29/01/2020",
"30/01/2020", "31/01/2020", "01/02/2020", "02/02/2020", "03/02/2020",
"04/02/2020", "05/02/2020", "06/02/2020", "07/02/2020", "08/02/2020",
"09/02/2020", "10/02/2020", "11/02/2020", "12/02/2020", "13/02/2020",
"14/02/2020", "15/02/2020", "16/02/2020", "17/02/2020"), d2s1 = c(6L,
11L, 13L, 20L, 25L, 35L, 42L, 49L, 49L, 51L, 53L, 54L, 60L, 65L,
69L, 73L, 76L, 80L, 85L, 86L, 86L, 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, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), d10s2 = c(0L, 6L, 8L,
10L, 11L, 14L, 14L, 15L, 18L, 19L, 21L, 21L, 22L, 22L, 24L, 24L,
26L, 27L, 31L, 32L, 32L, 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, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA), d20s1 = c(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, 3L, 9L, 13L, 19L, 24L, 26L, 32L, 38L, 44L, 46L, 48L,
50L, 56L, 62L, 64L, 64L, 73L, 83L, 92L, 99L, 105L, 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), d20s2 = c(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, 0L, 2L, 2L, 3L, 4L, 14L, 15L, 23L, 25L, 27L, 36L, 37L, 38L,
43L, 43L, 45L, 47L, 50L, 53L, 56L, 57L, 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), d10s1 = c(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, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, 2L, 15L, 19L, 22L, 33L, 34L, 37L,
37L, 39L, 41L, 48L, 50L, 52L, 56L, 62L, 64L, 65L, 68L, 72L, 77L,
84L), d2s2 = c(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, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 4L, 4L, 4L, 4L, 4L, 7L, 9L, 9L, 12L, 12L,
14L, 17L, 17L, 23L, 24L, 24L, 24L, 26L, 26L, 30L, 33L)), class = "data.frame", row.names = c(NA,
-102L)
The function geom_step() has an argument na.rm to remove NA values, which is FALSE by default. changing this to TRUE should give you the plots that you want. Alternatively you could change the NA data to zeroes for the same effect.
The crowded x-axis is typical of what happens when the data is stored as a factor, rather than a date. This will be related to how you read in your data, which you haven't shown.

How to have a different color spectrum for two variables in r?

I am plotting two variables with the following code:
ggplot()+
geom_point(data=subset(afc_reopening, key == "mean_spend_all"),
aes(x=day_after_reopening, y=mean_spend_cases * 100, color = winner2016)) +
stat_smooth(data=subset(afc_reopening,key == "mean_spend_all"),
formula = y~as.numeric(x), se = F,
aes(x=day_after_reopening, y=mean_spend_cases*100, color = winner2016))+
geom_point(data=subset(afc_reopening, key == "new_case_rate_07da"),
aes(x=day_after_reopening, y=mean_spend_cases,),) +
stat_smooth(data=subset(afc_reopening,key == "new_case_rate_07da"),
formula = y~as.numeric(x), se = F,
aes(x=day_after_reopening, y=mean_spend_cases, color = winner2016),)+
facet_wrap(.~deciles_income,scales = 'free')+
theme(legend.position = 'top')+
ylab('Change in consumer spending relative to 14th January and Past 7 Days New Cases Average')+
labs(title = "Change in spending and Past 7 Days New Cases Average in US Counties Grouped by Income Decile") +
scale_x_continuous(limits = c(-100,100))
The code results in the following graph:
The only problem I am having with the graph is that the points for both values are in the same color. I would like to have different color spectrum for spending and for cases (with each still being grouped by the winner of the 2016 election). How do I do this in ggplot?
Here is the output of the dput() function:
structure(list(day_month_year = structure(c(NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 18364, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 18392, NA, NA, NA, NA, NA, NA, NA, 18427,
18392, NA, NA, NA, 18329, NA, 18427, NA, NA, NA, NA, NA, NA,
NA, NA, 18301, NA, NA, NA, NA, NA, NA, 18294, NA, NA, NA, NA,
NA, 18441, NA, NA, NA, 18378, NA, NA, 18420, 18294, NA, NA, NA,
NA), tzone = "Europe/Prague", class = "Date"), deciles_income = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 3L, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 7L, NA, NA, NA, NA, NA, NA, NA,
3L, 5L, NA, NA, NA, 2L, NA, 9L, NA, NA, NA, NA, NA, NA, NA, NA,
5L, NA, NA, NA, NA, NA, NA, 8L, NA, NA, NA, NA, NA, 6L, NA, NA,
NA, 2L, NA, NA, 3L, 9L, NA, NA, NA, NA), winner2016 = c(NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "Donald Trump",
NA, NA, NA, NA, NA, NA, NA, NA, NA, "Hillary Clinton", NA, NA,
NA, NA, NA, NA, NA, "Hillary Clinton", "Hillary Clinton", NA,
NA, NA, "Hillary Clinton", NA, "Donald Trump", NA, NA, NA, NA,
NA, NA, NA, NA, "Hillary Clinton", NA, NA, NA, NA, NA, NA, "Hillary Clinton",
NA, NA, NA, NA, NA, "Hillary Clinton", NA, NA, NA, "Hillary Clinton",
NA, NA, "Donald Trump", NA, NA, NA, NA, NA), key = c(NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "new_case_rate_07da",
NA, NA, NA, NA, NA, NA, NA, NA, NA, "mean_spend_all", NA, NA,
NA, NA, NA, NA, NA, "new_case_rate_07da", "new_case_rate_07da",
NA, NA, NA, "mean_spend_all", NA, "mean_spend_all", NA, NA, NA,
NA, NA, NA, NA, NA, "new_case_rate_07da", NA, NA, NA, NA, NA,
NA, "new_case_rate_07da", NA, NA, NA, NA, NA, "new_case_rate_07da",
NA, NA, NA, "mean_spend_all", NA, NA, "new_case_rate_07da", "new_case_rate_07da",
NA, NA, NA, NA), mean_spend_cases = c(NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 2.98999975990396, NA, NA,
NA, NA, NA, NA, NA, NA, NA, -0.163540740740741, NA, NA, NA, NA,
NA, NA, NA, 8.37364285714286, 4.66982142857143, NA, NA, NA, -0.0154640434782609,
NA, -0.0665955440414508, NA, NA, NA, NA, NA, NA, NA, NA, 0, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 12.0187207792208,
NA, NA, NA, -0.187623043478261, NA, NA, 7.48311044417767, 0,
NA, NA, NA, NA)), row.names = c(NA, -75L), groups = structure(list(
day_month_year = structure(c(18294, 18294, 18301, 18329,
18364, 18378, 18392, 18392, 18420, 18427, 18427, 18441, NA
), tzone = "Europe/Prague", class = "Date"), deciles_income = c(8L,
9L, 5L, 2L, 3L, 2L, 5L, 7L, 3L, 3L, 9L, 6L, NA), .rows = structure(list(
57L, 71L, 50L, 39L, 16L, 67L, 35L, 26L, 70L, 34L, 41L,
63L, c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L,
12L, 13L, 14L, 15L, 17L, 18L, 19L, 20L, 21L, 22L, 23L,
24L, 25L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 36L, 37L,
38L, 40L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 51L,
52L, 53L, 54L, 55L, 56L, 58L, 59L, 60L, 61L, 62L, 64L,
65L, 66L, 68L, 69L, 72L, 73L, 74L, 75L)), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = c(NA, 13L), class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))

r - remove categories from a bar chart

Using this code:
ggplot(Template.2006.2017, aes(x=Disaster_category, y=Total_US_received_from.CERF)) +
ggtitle("MEAN Total Funding Received CERF") +
geom_bar(stat="summary", fun.y = "mean", fill="lightblue") +
coord_flip() + labs(y="US$") + labs(x="")
I've created this bar chart:
showing the funding for various disaster categories. Now, I would like to remove all the categories that have received zero funding (Other, Insect infestation, Disease and missing/NA). How can this be done in r?
Here's my data (compressed):
structure(list(Disaster_category = structure(c(1L, 15L, 17L,
15L, 5L, 8L, 13L, 8L, 2L, 8L, 2L, 3L, 8L, 2L, 8L, 2L, 10L, 5L,
7L, 8L, 15L, 2L, 8L, 2L, 15L, 15L, 8L, 15L, 2L, 17L, 2L, 7L,
2L, 8L, 2L, 3L, 2L, 8L, 8L, 2L, 8L, 17L, 2L, 3L, 8L, 8L, 2L,
8L, 8L, 8L, 2L, 8L, 3L, 2L, 3L, 2L, 8L, 2L, 3L, 8L, 2L, 8L, 2L,
15L, 5L, 8L, 13L, 8L, 15L, 2L, 8L, 2L, 3L, 2L, 3L, 15L, 8L, 3L,
2L, 3L, 8L, 2L, 3L, 2L, 8L, 2L, 8L, 15L, 2L, 8L, 8L, 5L, 2L,
8L, 2L, 3L, 2L, 17L, 2L, 17L, 2L, 4L, 5L, 8L, 8L, 2L, 8L, 15L,
2L, 15L, 15L, 7L, 2L, 8L, 2L, 15L, 15L, 7L, 8L, 17L, 2L, 15L,
8L, 2L, 17L, 2L, 3L, 8L, 2L, 5L, 2L, 8L, 2L, 8L, 8L, 15L, 2L,
8L, 2L, 15L, 8L, 2L, 15L, 8L, 7L, 8L, 15L, 2L, 8L, 8L), .Label = c("",
" ", "Disease", "Disease related disaster", "Drought", "Drought & storm",
"Extreme temperature / fire", "Flood", "Flood & drought", "Insect infestation",
"Insect infestation & drought", "Landslide & flood", "Landslide / mudslide",
"Other", "Storm", "Storm & flood", "Winter"), class = "factor"),
Total_US_received_from.CERF = c(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, 678307.8333, 678307.8333,
678307.8333, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 1110469.5, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, 1905355, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2493246,
2493246, 2493246, 2493246, 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, 333333.3333, 333333.3333, 333333.3333,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
Total_US_received = c(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, 15507224.5, 15507224.5, 15507224.5,
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, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 333333.3333, 333333.3333,
333333.3333, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA), Total_US_required = c(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, 20502064.83,
20502064.83, 20502064.83, 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, 3070192, NA, NA, NA, NA, NA, NA, NA, NA, NA,
49955895.25, 49955895.25, 49955895.25, 49955895.25, 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, 333333.3333,
333333.3333, 333333.3333, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA)), row.names = c(NA, 150L), class = "data.frame")
Consider calculating group means with ave before plotting and then subset all rows with means greater than zero as the underlying data for plotting:
# ADD NEW INLINE GROUP MEAN
Template.2006.2017$CERF_categ_mean <- with(Template.2006.2017,
ave(Total_US_received_from.CERF, Disaster_category,
FUN=function(x) mean(x, na.rm=TRUE)))
# SUBSET DATAFRAME
sub_df <- subset(Template.2006.2017, CERF_categ_mean > 0)
# PLOT SUBSETTED DATA
ggplot(sub_df, aes(x=Disaster_category, y=Total_US_received_from.CERF)) +
ggtitle("MEAN Total Funding Received CERF") +
geom_bar(stat="summary", fun.y = "mean", fill="lightblue") +
coord_flip() + labs(y="US$") + labs(x="")
Would removing the NA values from the dataframe solve your problem?
library(tidyverse)
Template.2006.2017 %>%
filter(!is.na(Total_US_received_from.CERF)) %>%
ggplot(aes(x=Disaster_category, y=Total_US_received_from.CERF)) +
ggtitle("MEAN Total Funding Received CERF") +
geom_bar(stat="summary", fun.y = "mean", fill="lightblue") +
coord_flip() + labs(y="US$") + labs(x="")

Resources