#read csv file
garment_prod <-read.csv("/Users/lakshmimounikab/Desktop/Stats with R/R practice/garment_prod.csv")
summary(garment_prod)
## date quarter department day
## Length:1197 Length:1197 Length:1197 Length:1197
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## team targeted_productivity smv wip
## Min. : 1.000 Min. :0.0700 Min. : 2.90 Min. : 7.0
## 1st Qu.: 3.000 1st Qu.:0.7000 1st Qu.: 3.94 1st Qu.: 774.5
## Median : 6.000 Median :0.7500 Median :15.26 Median : 1039.0
## Mean : 6.427 Mean :0.7296 Mean :15.06 Mean : 1190.5
## 3rd Qu.: 9.000 3rd Qu.:0.8000 3rd Qu.:24.26 3rd Qu.: 1252.5
## Max. :12.000 Max. :0.8000 Max. :54.56 Max. :23122.0
## NA's :506
## over_time incentive idle_time idle_men
## Min. : 0 Min. : 0.00 Min. : 0.0000 Min. : 0.0000
## 1st Qu.: 1440 1st Qu.: 0.00 1st Qu.: 0.0000 1st Qu.: 0.0000
## Median : 3960 Median : 0.00 Median : 0.0000 Median : 0.0000
## Mean : 4567 Mean : 38.21 Mean : 0.7302 Mean : 0.3693
## 3rd Qu.: 6960 3rd Qu.: 50.00 3rd Qu.: 0.0000 3rd Qu.: 0.0000
## Max. :25920 Max. :3600.00 Max. :300.0000 Max. :45.0000
##
## no_of_style_change no_of_workers actual_productivity
## Min. :0.0000 Min. : 2.00 Min. :0.2337
## 1st Qu.:0.0000 1st Qu.: 9.00 1st Qu.:0.6503
## Median :0.0000 Median :34.00 Median :0.7733
## Mean :0.1504 Mean :34.61 Mean :0.7351
## 3rd Qu.:0.0000 3rd Qu.:57.00 3rd Qu.:0.8503
## Max. :2.0000 Max. :89.00 Max. :1.1204
##
# load dplyr library
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
# Group by quarter for actual and targeted productivity
qtr_group <- garment_prod %>% group_by(quarter) %>%
summarise(avg_qtr_targeted = mean(targeted_productivity),
avg_qtr_actual = mean(actual_productivity))
View(qtr_group)
summary(qtr_group)
## quarter avg_qtr_targeted avg_qtr_actual
## Length:5 Min. :0.7145 Min. :0.7048
## Class :character 1st Qu.:0.7182 1st Qu.:0.7091
## Mode :character Median :0.7212 Median :0.7437
## Mean :0.7260 Mean :0.7471
## 3rd Qu.:0.7321 3rd Qu.:0.7516
## Max. :0.7441 Max. :0.8262
# Group by team for smv and incentive
team_group <- garment_prod %>% group_by(team) %>%
summarise(std_smv = sd(smv), std_incentive = sd(incentive))
View(team_group)
summary(team_group)
## team std_smv std_incentive
## Min. : 1.00 Min. : 5.579 Min. : 22.13
## 1st Qu.: 3.75 1st Qu.: 9.895 1st Qu.: 95.23
## Median : 6.50 Median :11.167 Median :100.48
## Mean : 6.50 Mean :10.520 Mean :129.97
## 3rd Qu.: 9.25 3rd Qu.:11.879 3rd Qu.:126.02
## Max. :12.00 Max. :12.574 Max. :351.52
# Group by day for overtime and no of workers
day_group <- garment_prod %>% group_by(day) %>%
summarise(sum_over_time = sum(over_time), total_no_of_workers = sum(no_of_workers))
View(day_group)
summary(day_group)
## day sum_over_time total_no_of_workers
## Length:6 Min. : 863490 Min. :6264
## Class :character 1st Qu.: 869975 1st Qu.:6949
## Mode :character Median : 885340 Median :6996
## Mean : 911208 Mean :6905
## 3rd Qu.: 921008 3rd Qu.:7036
## Max. :1035330 Max. :7190
# Group by date, day and team
mul_group <- garment_prod %>% group_by(date,day,team) %>%
summarise(mean_qtr_targeted_prod = mean(targeted_productivity),
mean_qtr_actual_prod = mean(actual_productivity),
mean_over_time = mean(over_time),
std_over_time = sd(over_time),
mean_no_of_workers = mean(no_of_workers),
std_no_of_workers = sd(no_of_workers))
## `summarise()` has grouped output by 'date', 'day'. You can override using the
## `.groups` argument.
View(mul_group)
qtr_grouped_data <- qtr_group %>%
mutate(prob_targeted= avg_qtr_targeted / sum(avg_qtr_targeted), prob_actual = avg_qtr_actual / sum(avg_qtr_actual))
View(qtr_grouped_data)
team_grouped_data <- team_group %>%
mutate(prob_smv = std_smv/ sum(std_smv),
prob_incentive= std_incentive / sum(std_incentive))
View(team_grouped_data)
day_grouped_data <- day_group %>%
mutate(prob_over_time = sum_over_time / sum(sum_over_time),
prob_no_of_workers = total_no_of_workers / sum(total_no_of_workers))
View(day_grouped_data)
ggplot(qtr_grouped_data, aes(x = quarter, y = avg_qtr_targeted)) +
geom_bar(stat = "identity", fill = "skyblue", color = "black") +
labs(
title = "Bar Graph for Grouped data by Quarter",
x = "Quarter",
y = "Avg_qtr_targeted"
) +
theme_minimal()
ggplot(team_grouped_data, aes(x = std_incentive, y = std_smv, color = team)) +
geom_point() +
labs(
title = "Scatter Plot for Team Grouped data",
x = "std_incentive",
y = "std_smv",
color = "Team"
) +
theme_minimal()
ggplot(day_grouped_data, aes(x = day, y = sum_over_time, group = 1)) +
geom_line() +
geom_point() +
labs(title = "Line Plot for Grouped Data", x = "Category", y = "Mean Value") +
theme_minimal()
min_qtr_grouped_data <- qtr_grouped_data %>%
filter(prob_targeted == min(prob_targeted)) %>%
mutate(Anomaly_1 ="Targeted Prob anomaly")
View(min_qtr_grouped_data)
summary(min_qtr_grouped_data)
## quarter avg_qtr_targeted avg_qtr_actual prob_targeted
## Length:1 Min. :0.7145 Min. :0.7091 Min. :0.1968
## Class :character 1st Qu.:0.7145 1st Qu.:0.7091 1st Qu.:0.1968
## Mode :character Median :0.7145 Median :0.7091 Median :0.1968
## Mean :0.7145 Mean :0.7091 Mean :0.1968
## 3rd Qu.:0.7145 3rd Qu.:0.7091 3rd Qu.:0.1968
## Max. :0.7145 Max. :0.7091 Max. :0.1968
## prob_actual Anomaly_1
## Min. :0.1898 Length:1
## 1st Qu.:0.1898 Class :character
## Median :0.1898 Mode :character
## Mean :0.1898
## 3rd Qu.:0.1898
## Max. :0.1898
min_team_grouped_data <- team_grouped_data %>%
filter(prob_smv == min(prob_smv)) %>%
mutate(Anomaly_2 ="SMV Prob anomaly")
View(min_team_grouped_data)
summary(min_team_grouped_data)
## team std_smv std_incentive prob_smv
## Min. :12 Min. :5.579 Min. :108.7 Min. :0.0442
## 1st Qu.:12 1st Qu.:5.579 1st Qu.:108.7 1st Qu.:0.0442
## Median :12 Median :5.579 Median :108.7 Median :0.0442
## Mean :12 Mean :5.579 Mean :108.7 Mean :0.0442
## 3rd Qu.:12 3rd Qu.:5.579 3rd Qu.:108.7 3rd Qu.:0.0442
## Max. :12 Max. :5.579 Max. :108.7 Max. :0.0442
## prob_incentive Anomaly_2
## Min. :0.06972 Length:1
## 1st Qu.:0.06972 Class :character
## Median :0.06972 Mode :character
## Mean :0.06972
## 3rd Qu.:0.06972
## Max. :0.06972
min_day_grouped_data <- day_grouped_data %>%
filter(prob_over_time == min(prob_over_time)) %>%
mutate(Anomaly_3 ="Over time Prob anomaly")
View(min_day_grouped_data)
summary(min_day_grouped_data)
## day sum_over_time total_no_of_workers prob_over_time
## Length:1 Min. :863490 Min. :7190 Min. :0.1579
## Class :character 1st Qu.:863490 1st Qu.:7190 1st Qu.:0.1579
## Mode :character Median :863490 Median :7190 Median :0.1579
## Mean :863490 Mean :7190 Mean :0.1579
## 3rd Qu.:863490 3rd Qu.:7190 3rd Qu.:0.1579
## Max. :863490 Max. :7190 Max. :0.1579
## prob_no_of_workers Anomaly_3
## Min. :0.1736 Length:1
## 1st Qu.:0.1736 Class :character
## Median :0.1736 Mode :character
## Mean :0.1736
## 3rd Qu.:0.1736
## Max. :0.1736
data <- garment_prod %>%
left_join(min_qtr_grouped_data, by="quarter") %>%
left_join(min_team_grouped_data, by="team") %>%
left_join(min_day_grouped_data, by="day")
data$Anomaly_1[is.na(data$Anomaly_1)] <- "Not Anomaly"
data$Anomaly_2[is.na(data$Anomaly_2)] <- "Not Anomaly"
data$Anomaly_3[is.na(data$Anomaly_3)] <- "Not Anomaly"
summary(data)
## date quarter department day
## Length:1197 Length:1197 Length:1197 Length:1197
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## team targeted_productivity smv wip
## Min. : 1.000 Min. :0.0700 Min. : 2.90 Min. : 7.0
## 1st Qu.: 3.000 1st Qu.:0.7000 1st Qu.: 3.94 1st Qu.: 774.5
## Median : 6.000 Median :0.7500 Median :15.26 Median : 1039.0
## Mean : 6.427 Mean :0.7296 Mean :15.06 Mean : 1190.5
## 3rd Qu.: 9.000 3rd Qu.:0.8000 3rd Qu.:24.26 3rd Qu.: 1252.5
## Max. :12.000 Max. :0.8000 Max. :54.56 Max. :23122.0
## NA's :506
## over_time incentive idle_time idle_men
## Min. : 0 Min. : 0.00 Min. : 0.0000 Min. : 0.0000
## 1st Qu.: 1440 1st Qu.: 0.00 1st Qu.: 0.0000 1st Qu.: 0.0000
## Median : 3960 Median : 0.00 Median : 0.0000 Median : 0.0000
## Mean : 4567 Mean : 38.21 Mean : 0.7302 Mean : 0.3693
## 3rd Qu.: 6960 3rd Qu.: 50.00 3rd Qu.: 0.0000 3rd Qu.: 0.0000
## Max. :25920 Max. :3600.00 Max. :300.0000 Max. :45.0000
##
## no_of_style_change no_of_workers actual_productivity avg_qtr_targeted
## Min. :0.0000 Min. : 2.00 Min. :0.2337 Min. :0.7145
## 1st Qu.:0.0000 1st Qu.: 9.00 1st Qu.:0.6503 1st Qu.:0.7145
## Median :0.0000 Median :34.00 Median :0.7733 Median :0.7145
## Mean :0.1504 Mean :34.61 Mean :0.7351 Mean :0.7145
## 3rd Qu.:0.0000 3rd Qu.:57.00 3rd Qu.:0.8503 3rd Qu.:0.7145
## Max. :2.0000 Max. :89.00 Max. :1.1204 Max. :0.7145
## NA's :949
## avg_qtr_actual prob_targeted prob_actual Anomaly_1
## Min. :0.7091 Min. :0.1968 Min. :0.1898 Length:1197
## 1st Qu.:0.7091 1st Qu.:0.1968 1st Qu.:0.1898 Class :character
## Median :0.7091 Median :0.1968 Median :0.1898 Mode :character
## Mean :0.7091 Mean :0.1968 Mean :0.1898
## 3rd Qu.:0.7091 3rd Qu.:0.1968 3rd Qu.:0.1898
## Max. :0.7091 Max. :0.1968 Max. :0.1898
## NA's :949 NA's :949 NA's :949
## std_smv std_incentive prob_smv prob_incentive
## Min. :5.579 Min. :108.7 Min. :0.0442 Min. :0.0697
## 1st Qu.:5.579 1st Qu.:108.7 1st Qu.:0.0442 1st Qu.:0.0697
## Median :5.579 Median :108.7 Median :0.0442 Median :0.0697
## Mean :5.579 Mean :108.7 Mean :0.0442 Mean :0.0697
## 3rd Qu.:5.579 3rd Qu.:108.7 3rd Qu.:0.0442 3rd Qu.:0.0697
## Max. :5.579 Max. :108.7 Max. :0.0442 Max. :0.0697
## NA's :1098 NA's :1098 NA's :1098 NA's :1098
## Anomaly_2 sum_over_time total_no_of_workers prob_over_time
## Length:1197 Min. :863490 Min. :7190 Min. :0.1579
## Class :character 1st Qu.:863490 1st Qu.:7190 1st Qu.:0.1579
## Mode :character Median :863490 Median :7190 Median :0.1579
## Mean :863490 Mean :7190 Mean :0.1579
## 3rd Qu.:863490 3rd Qu.:7190 3rd Qu.:0.1579
## Max. :863490 Max. :7190 Max. :0.1579
## NA's :989 NA's :989 NA's :989
## prob_no_of_workers Anomaly_3
## Min. :0.1736 Length:1197
## 1st Qu.:0.1736 Class :character
## Median :0.1736 Mode :character
## Mean :0.1736
## 3rd Qu.:0.1736
## Max. :0.1736
## NA's :989
The above summary is the combinations of all the possible summaries within the dataset. It also includes probabilities and anomalies. There are 3 grouped datasets, based on quarter, team and department. Anomaly length for each group summary is low which implies that the probability of observing a group with low probability is low. Since these probabilities are low, these groups can be classified as rare, which could be worth investigating in the future.
# Generate all combinations of the categorical variables
data <- garment_prod
combinations <-expand.grid(cat1 = unique(data$quarter), cat2 = unique(data$department), cat3 = unique(data$team))
print(combinations)
## cat1 cat2 cat3
## 1 Quarter1 sweing 8
## 2 Quarter2 sweing 8
## 3 Quarter3 sweing 8
## 4 Quarter4 sweing 8
## 5 Quarter5 sweing 8
## 6 Quarter1 finishing 8
## 7 Quarter2 finishing 8
## 8 Quarter3 finishing 8
## 9 Quarter4 finishing 8
## 10 Quarter5 finishing 8
## 11 Quarter1 finishing 8
## 12 Quarter2 finishing 8
## 13 Quarter3 finishing 8
## 14 Quarter4 finishing 8
## 15 Quarter5 finishing 8
## 16 Quarter1 sweing 1
## 17 Quarter2 sweing 1
## 18 Quarter3 sweing 1
## 19 Quarter4 sweing 1
## 20 Quarter5 sweing 1
## 21 Quarter1 finishing 1
## 22 Quarter2 finishing 1
## 23 Quarter3 finishing 1
## 24 Quarter4 finishing 1
## 25 Quarter5 finishing 1
## 26 Quarter1 finishing 1
## 27 Quarter2 finishing 1
## 28 Quarter3 finishing 1
## 29 Quarter4 finishing 1
## 30 Quarter5 finishing 1
## 31 Quarter1 sweing 11
## 32 Quarter2 sweing 11
## 33 Quarter3 sweing 11
## 34 Quarter4 sweing 11
## 35 Quarter5 sweing 11
## 36 Quarter1 finishing 11
## 37 Quarter2 finishing 11
## 38 Quarter3 finishing 11
## 39 Quarter4 finishing 11
## 40 Quarter5 finishing 11
## 41 Quarter1 finishing 11
## 42 Quarter2 finishing 11
## 43 Quarter3 finishing 11
## 44 Quarter4 finishing 11
## 45 Quarter5 finishing 11
## 46 Quarter1 sweing 12
## 47 Quarter2 sweing 12
## 48 Quarter3 sweing 12
## 49 Quarter4 sweing 12
## 50 Quarter5 sweing 12
## 51 Quarter1 finishing 12
## 52 Quarter2 finishing 12
## 53 Quarter3 finishing 12
## 54 Quarter4 finishing 12
## 55 Quarter5 finishing 12
## 56 Quarter1 finishing 12
## 57 Quarter2 finishing 12
## 58 Quarter3 finishing 12
## 59 Quarter4 finishing 12
## 60 Quarter5 finishing 12
## 61 Quarter1 sweing 6
## 62 Quarter2 sweing 6
## 63 Quarter3 sweing 6
## 64 Quarter4 sweing 6
## 65 Quarter5 sweing 6
## 66 Quarter1 finishing 6
## 67 Quarter2 finishing 6
## 68 Quarter3 finishing 6
## 69 Quarter4 finishing 6
## 70 Quarter5 finishing 6
## 71 Quarter1 finishing 6
## 72 Quarter2 finishing 6
## 73 Quarter3 finishing 6
## 74 Quarter4 finishing 6
## 75 Quarter5 finishing 6
## 76 Quarter1 sweing 7
## 77 Quarter2 sweing 7
## 78 Quarter3 sweing 7
## 79 Quarter4 sweing 7
## 80 Quarter5 sweing 7
## 81 Quarter1 finishing 7
## 82 Quarter2 finishing 7
## 83 Quarter3 finishing 7
## 84 Quarter4 finishing 7
## 85 Quarter5 finishing 7
## 86 Quarter1 finishing 7
## 87 Quarter2 finishing 7
## 88 Quarter3 finishing 7
## 89 Quarter4 finishing 7
## 90 Quarter5 finishing 7
## 91 Quarter1 sweing 2
## 92 Quarter2 sweing 2
## 93 Quarter3 sweing 2
## 94 Quarter4 sweing 2
## 95 Quarter5 sweing 2
## 96 Quarter1 finishing 2
## 97 Quarter2 finishing 2
## 98 Quarter3 finishing 2
## 99 Quarter4 finishing 2
## 100 Quarter5 finishing 2
## 101 Quarter1 finishing 2
## 102 Quarter2 finishing 2
## 103 Quarter3 finishing 2
## 104 Quarter4 finishing 2
## 105 Quarter5 finishing 2
## 106 Quarter1 sweing 3
## 107 Quarter2 sweing 3
## 108 Quarter3 sweing 3
## 109 Quarter4 sweing 3
## 110 Quarter5 sweing 3
## 111 Quarter1 finishing 3
## 112 Quarter2 finishing 3
## 113 Quarter3 finishing 3
## 114 Quarter4 finishing 3
## 115 Quarter5 finishing 3
## 116 Quarter1 finishing 3
## 117 Quarter2 finishing 3
## 118 Quarter3 finishing 3
## 119 Quarter4 finishing 3
## 120 Quarter5 finishing 3
## 121 Quarter1 sweing 9
## 122 Quarter2 sweing 9
## 123 Quarter3 sweing 9
## 124 Quarter4 sweing 9
## 125 Quarter5 sweing 9
## 126 Quarter1 finishing 9
## 127 Quarter2 finishing 9
## 128 Quarter3 finishing 9
## 129 Quarter4 finishing 9
## 130 Quarter5 finishing 9
## 131 Quarter1 finishing 9
## 132 Quarter2 finishing 9
## 133 Quarter3 finishing 9
## 134 Quarter4 finishing 9
## 135 Quarter5 finishing 9
## 136 Quarter1 sweing 10
## 137 Quarter2 sweing 10
## 138 Quarter3 sweing 10
## 139 Quarter4 sweing 10
## 140 Quarter5 sweing 10
## 141 Quarter1 finishing 10
## 142 Quarter2 finishing 10
## 143 Quarter3 finishing 10
## 144 Quarter4 finishing 10
## 145 Quarter5 finishing 10
## 146 Quarter1 finishing 10
## 147 Quarter2 finishing 10
## 148 Quarter3 finishing 10
## 149 Quarter4 finishing 10
## 150 Quarter5 finishing 10
## 151 Quarter1 sweing 5
## 152 Quarter2 sweing 5
## 153 Quarter3 sweing 5
## 154 Quarter4 sweing 5
## 155 Quarter5 sweing 5
## 156 Quarter1 finishing 5
## 157 Quarter2 finishing 5
## 158 Quarter3 finishing 5
## 159 Quarter4 finishing 5
## 160 Quarter5 finishing 5
## 161 Quarter1 finishing 5
## 162 Quarter2 finishing 5
## 163 Quarter3 finishing 5
## 164 Quarter4 finishing 5
## 165 Quarter5 finishing 5
## 166 Quarter1 sweing 4
## 167 Quarter2 sweing 4
## 168 Quarter3 sweing 4
## 169 Quarter4 sweing 4
## 170 Quarter5 sweing 4
## 171 Quarter1 finishing 4
## 172 Quarter2 finishing 4
## 173 Quarter3 finishing 4
## 174 Quarter4 finishing 4
## 175 Quarter5 finishing 4
## 176 Quarter1 finishing 4
## 177 Quarter2 finishing 4
## 178 Quarter3 finishing 4
## 179 Quarter4 finishing 4
## 180 Quarter5 finishing 4
#Counting combinations
combination_counts <- data %>%
group_by(quarter,team,department) %>%
summarize(Count = n())
## `summarise()` has grouped output by 'quarter', 'team'. You can override using
## the `.groups` argument.
View(combination_counts)
#Counting combinations
combination_counts_2 <- data %>%
group_by(quarter, day, team,department) %>%
summarize(Count = n())
## `summarise()` has grouped output by 'quarter', 'day', 'team'. You can override
## using the `.groups` argument.
View(combination_counts_2)
The combination which didn’t work for this dataset is with date column or attribute. For this dataset, the date attribute is not considered as categorical but as non-categorical.
most_common_combinations <- combination_counts %>%
filter(Count == max(Count))
cat("\nMost Common Combinations:\n")
##
## Most Common Combinations:
print(most_common_combinations)
## # A tibble: 68 × 4
## # Groups: quarter, team [60]
## quarter team department Count
## <chr> <int> <chr> <int>
## 1 Quarter1 1 sweing 18
## 2 Quarter1 2 sweing 17
## 3 Quarter1 3 sweing 18
## 4 Quarter1 4 sweing 18
## 5 Quarter1 5 sweing 17
## 6 Quarter1 6 sweing 18
## 7 Quarter1 7 sweing 17
## 8 Quarter1 8 sweing 16
## 9 Quarter1 9 sweing 18
## 10 Quarter1 10 sweing 18
## # ℹ 58 more rows
least_common_combinations <- combination_counts %>%
filter(Count == min(Count))
cat("\nLeast Common Combinations:\n")
##
## Least Common Combinations:
print(least_common_combinations)
## # A tibble: 76 × 4
## # Groups: quarter, team [60]
## quarter team department Count
## <chr> <int> <chr> <int>
## 1 Quarter1 1 "finishing" 9
## 2 Quarter1 1 "finishing " 9
## 3 Quarter1 2 "finishing " 8
## 4 Quarter1 3 "finishing" 5
## 5 Quarter1 3 "finishing " 5
## 6 Quarter1 4 "finishing" 7
## 7 Quarter1 5 "finishing " 2
## 8 Quarter1 6 "finishing " 4
## 9 Quarter1 7 "finishing " 7
## 10 Quarter1 8 "finishing" 7
## # ℹ 66 more rows
library(ggplot2)
ggplot(combination_counts, aes(x = combination_counts$quarter, y = combination_counts$Count))+ geom_bar(stat = "identity", position = position_dodge(width = 0.8)) +
facet_wrap(~combination_counts$team) +
labs(
x = "quarter",
y = "Count",
fill = "team",
title = "Grouped Barplot for Quarter and count with respect to Department"
) +
theme_minimal() + scale_fill_discrete() + theme(legend.position = "top")
ggplot(combination_counts, aes(x = combination_counts$quarter, y = combination_counts$Count))+ geom_bar(stat = "identity", position = position_dodge(width = 0.8)) +
facet_wrap(~combination_counts$department) +
labs(
x = "quarter",
y = "Count",
fill = "department",
title = "Grouped Barplot for Quarter and department with respect to Count"
) +
theme_minimal() + scale_fill_discrete() + theme(legend.position = "top")
ggplot(combination_counts, aes(x = combination_counts$quarter, y = combination_counts$team, fill = combination_counts$Count)) +
geom_tile() +
scale_fill_gradient(low = "white", high = "blue") +
labs(x = "quarter", y = "team", fill = "Count") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplot(combination_counts, aes(x = combination_counts$quarter, y = combination_counts$department, fill = combination_counts$Count)) +
geom_tile() +
scale_fill_gradient(low = "white", high = "red") +
labs(x = "quarter", y = "team", fill = "Count") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))