Reputation: 31
I have two groups of data corresponding to a duplicated gene. I would like to plot these data using an interaction box plot, and have been unable to get a version that does what I want. The closest I can get is to run each plot separately. How might I get the second gene onto the first plot.
library(ggplot2)
library(dplyr)
# Set working directory (update if necessary)
setwd("//")
# Load data
df <- read.csv("sdhB_expression_2016.csv")
# **Subset only SDHBa data**
df_sdhba <- df %>% filter(Gene == "SDHBa")
# Convert categorical variables to factors
df_sdhba$Elev <- factor(df_sdhba$Elev, levels = c("OVS (1250 m)", "CCR (3100 m)"))
df_sdhba$tRNA <- factor(df_sdhba$tRNA, levels = c("A", "C"))
df_sdhba$Temperature <- factor(df_sdhba$Temperature)
# Define custom colors for box fill (by Elevation)
elev_colors <- c("OVS (1250 m)" = "#D2B48C", "CCR (3100 m)" = "#90EE90")
# Create the plot
p <- ggplot(df_sdhba, aes(x = interaction(tRNA, Elev), y = Expression, fill = Elev)) +
# Boxplots with elevation-based fill color
geom_boxplot(aes(group = interaction(tRNA, Elev)), color = "black", outlier.shape = NA, alpha = 0.5) +
# Scatter plot (points only) with jitter
geom_jitter(aes(color = Temperature), position = position_jitter(width = 0.2),
size = 2, alpha = 0.8) +
# Horizontal dashed reference line
geom_hline(yintercept = -0.367, linetype = "dashed", color = "black") +
# Set colors for Temperature (scatter points)
scale_color_manual(values = c("20C" = "blue", "36C" = "red")) +
# Set fill colors for Elevation (boxes)
scale_fill_manual(values = elev_colors, name = "Elevation") +
# Set x-axis labels (Only show A and C)
scale_x_discrete(labels = c("A", "C", "A", "C")) +
# Set y-axis range and format labels to two decimal places (no scientific notation)
scale_y_continuous(limits = c(-0.7, 0.05),
breaks = seq(-0.7, 0.05, by = 0.1),
labels = function(x) sprintf("%.2f", x)) +
# Labels
labs(y = "Transformed normalized gene expression",
color = "Temperature") +
# Custom theme: remove all grid lines and borders
theme_bw() +
theme(
legend.position = "right",
legend.title = element_text(size = 12),
legend.text = element_text(size = 10),
axis.title.x = element_blank(), # Remove x-axis label
axis.title.y = element_text(size = 14),
axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 12),
panel.grid.major = element_blank(), # Remove major grid
panel.grid.minor = element_blank(), # Remove minor grid
panel.border = element_blank(), # Remove all borders
axis.line.x = element_line(color = "black"), # Keep only x and y axis lines
axis.line.y = element_line(color = "black")
)
# Save the plot as a PNG (6 inches wide, 9 inches tall)
ggsave("sdhB_expression_box_scatter_sdhba.png", plot = p, width = 6, height = 9, units = "in", dpi = 300)
# Print the plot
print(p)
# **Subset only SDHBb data**
df_sdhbb <- df %>% filter(Gene == "SDHBb")
# Convert categorical variables to factors
df_sdhbb$Elev <- factor(df_sdhbb$Elev, levels = c("OVS (1250 m)", "CCR (3100 m)"))
df_sdhbb$tRNA <- factor(df_sdhbb$tRNA, levels = c("A", "C"))
df_sdhbb$Temperature <- factor(df_sdhbb$Temperature)
# Define custom colors for box fill (by Elevation)
elev_colors <- c("OVS (1250 m)" = "#D2B48C", "CCR (3100 m)" = "#90EE90")
# Create the plot
p <- ggplot(df_sdhbb, aes(x = interaction(tRNA, Elev), y = Expression, fill = Elev)) +
# Boxplots with elevation-based fill color
geom_boxplot(aes(group = interaction(tRNA, Elev)), color = "black", outlier.shape = NA, alpha = 0.5) +
# Scatter plot (points only) with jitter
geom_jitter(aes(color = Temperature), position = position_jitter(width = 0.2),
size = 2, alpha = 0.8) +
# Horizontal dashed reference line
geom_hline(yintercept = -0.367, linetype = "dashed", color = "black") +
# Set colors for Temperature (scatter points)
scale_color_manual(values = c("20C" = "blue", "36C" = "red")) +
# Set fill colors for Elevation (boxes)
scale_fill_manual(values = elev_colors, name = "Elevation") +
# Set x-axis labels (Only show A and C)
scale_x_discrete(labels = c("A", "C", "A", "C")) +
# Set y-axis range and format labels to two decimal places (no scientific notation)
scale_y_continuous(limits = c(-0.7, 0.05),
breaks = seq(-0.7, 0.05, by = 0.1),
labels = function(x) sprintf("%.2f", x)) +
# Labels
labs(y = "Transformed normalized gene expression",
color = "Temperature") +
# Custom theme: remove all grid lines and borders
theme_bw() +
theme(
legend.position = "right",
legend.title = element_text(size = 12),
legend.text = element_text(size = 10),
axis.title.x = element_blank(), # Remove x-axis label
axis.title.y = element_text(size = 14),
axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 12),
panel.grid.major = element_blank(), # Remove major grid
panel.grid.minor = element_blank(), # Remove minor grid
panel.border = element_blank(), # Remove all borders
axis.line.x = element_line(color = "black"), # Keep only x and y axis lines
axis.line.y = element_line(color = "black")
)
# Save the plot as a PNG (6 inches wide, 9 inches tall)
ggsave("sdhB_expression_box_scatter_sdhbb.png", plot = p, width = 6, height = 9, units = "in", dpi = 300)
# Print the plot
print(p)
data sdhB_expression_2016.csv below
df <- read.csv(text="BeetleID,tRNA,Elev,Temperature,Gene,Expression
3_Hi_Heat_GA_C_93_83,C,CCR (3100 m),36C,SDHBa,-0.02533343
3_Hi_Heat_GA_C_93_83,C,CCR (3100 m),36C,SDHBb,-0.659586909
4_Hi_Heat_GG_A_50_70,A,CCR (3100 m),36C,SDHBa,-0.057812969
4_Hi_Heat_GG_A_50_70,A,CCR (3100 m),36C,SDHBb,-0.545023063
7_Hi_Heat_GG_C_23_41,C,CCR (3100 m),36C,SDHBa,-0.053967406
7_Hi_Heat_GG_C_23_41,C,CCR (3100 m),36C,SDHBb,-0.534405563
8_Hi_Heat_AA_A_83_74,A,CCR (3100 m),36C,SDHBa,-0.075926641
8_Hi_Heat_AA_A_83_74,A,CCR (3100 m),36C,SDHBb,-0.506515175
10_Hi_Cont_GA_A_8_20,A,CCR (3100 m),20C,SDHBa,-0.041494318
10_Hi_Cont_GA_A_8_20,A,CCR (3100 m),20C,SDHBb,-0.499795764
11_Lo_Heat_GG_A_56_65,A,OVS (1250 m),36C,SDHBa,-0.098877264
11_Lo_Heat_GG_A_56_65,A,OVS (1250 m),36C,SDHBb,-0.476366036
12_Hi_Cont_GA_A_13_23,A,CCR (3100 m),20C,SDHBa,-0.110970289
12_Hi_Cont_GA_A_13_23,A,CCR (3100 m),20C,SDHBb,-0.402882299
13_Hi_Cont_AA_A_72_12,A,CCR (3100 m),20C,SDHBa,-0.060011559
13_Hi_Cont_AA_A_72_12,A,CCR (3100 m),20C,SDHBb,-0.464097841
18_Hi_Cont_GG_A_89_16,A,CCR (3100 m),20C,SDHBa,-0.083120881
18_Hi_Cont_GG_A_89_16,A,CCR (3100 m),20C,SDHBb,-0.537892242
22_Lo_Heat_AA_A_68_87,A,OVS (1250 m),36C,SDHBa,-0.060261124
22_Lo_Heat_AA_A_68_87,A,OVS (1250 m),36C,SDHBb,-0.513480031
23_Lo_Heat_AA_C_65_90,C,OVS (1250 m),36C,SDHBa,-0.056169173
23_Lo_Heat_AA_C_65_90,C,OVS (1250 m),36C,SDHBb,-0.580234842
28_Hi_Heat_GG_C_38_50,C,CCR (3100 m),36C,SDHBa,-0.073028489
28_Hi_Heat_GG_C_38_50,C,CCR (3100 m),36C,SDHBb,-0.537116943
29_Hi_Heat_AA_C_37_76,C,CCR (3100 m),36C,SDHBa,-0.054720957
29_Hi_Heat_AA_C_37_76,C,CCR (3100 m),36C,SDHBb,-0.570217471
31_Hi_Heat_GG_C_17_55,C,CCR (3100 m),36C,SDHBa,-0.076168723
31_Hi_Heat_GG_C_17_55,C,CCR (3100 m),36C,SDHBb,-0.539385044
32_Hi_Cont_GG_A_48_34,A,CCR (3100 m),20C,SDHBa,-0.081895389
32_Hi_Cont_GG_A_48_34,A,CCR (3100 m),20C,SDHBb,-0.45818182
33_Hi_Cont_GG_A_59_31,A,CCR (3100 m),20C,SDHBa,-0.068278843
33_Hi_Cont_GG_A_59_31,A,CCR (3100 m),20C,SDHBb,-0.534856386
34_Hi_Cont_GA_A_33_26,A,CCR (3100 m),20C,SDHBa,-0.060344841
34_Hi_Cont_GA_A_33_26,A,CCR (3100 m),20C,SDHBb,-0.512083636
37_Lo_Cont_GG_A_5_18,A,OVS (1250 m),20C,SDHBa,-0.038248368
37_Lo_Cont_GG_A_5_18,A,OVS (1250 m),20C,SDHBb,-0.508085757
42_Lo_Cont_AA_A_95_2,A,OVS (1250 m),20C,SDHBa,-0.060784951
42_Lo_Cont_AA_A_95_2,A,OVS (1250 m),20C,SDHBb,-0.595588407
43_Hi_Cont_GG_C_52_19,C,CCR (3100 m),20C,SDHBa,-0.061972349
43_Hi_Cont_GG_C_52_19,C,CCR (3100 m),20C,SDHBb,-0.535617548
45_Lo_Cont_GG_A_19_15,A,OVS (1250 m),20C,SDHBa,-0.034806497
45_Lo_Cont_GG_A_19_15,A,OVS (1250 m),20C,SDHBb,-0.595253564
51_Hi_Heat_GA_C_11_33,C,CCR (3100 m),36C,SDHBa,-0.031251811
51_Hi_Heat_GA_C_11_33,C,CCR (3100 m),36C,SDHBb,-0.548092591
53_Lo_Heat_GG_C_80_92,C,OVS (1250 m),36C,SDHBa,-0.024720973
53_Lo_Heat_GG_C_80_92,C,OVS (1250 m),36C,SDHBb,-0.525368938
54_Hi_Heat_GA_A_22_66,A,CCR (3100 m),36C,SDHBa,-0.058442322
54_Hi_Heat_GA_A_22_66,A,CCR (3100 m),36C,SDHBb,-0.553941996
55_Lo_Heat_GA_A_82_93,A,OVS (1250 m),36C,SDHBa,-0.037887802
55_Lo_Heat_GA_A_82_93,A,OVS (1250 m),36C,SDHBb,-0.597654886
57_Lo_Heat_GA_A_57_68,A,OVS (1250 m),36C,SDHBa,-0.042726416
57_Lo_Heat_GA_A_57_68,A,OVS (1250 m),36C,SDHBb,-0.492090089
58_Lo_Heat_GG_A_31_71,A,OVS (1250 m),36C,SDHBa,-0.037097405
58_Lo_Heat_GG_A_31_71,A,OVS (1250 m),36C,SDHBb,-0.525032018
59_Hi_Heat_GA_A_9_35,A,CCR (3100 m),36C,SDHBa,-0.081747093
59_Hi_Heat_GA_A_9_35,A,CCR (3100 m),36C,SDHBb,-0.511436244
60_Lo_Heat_GA_A_63_78,A,OVS (1250 m),36C,SDHBa,0.010538853
60_Lo_Heat_GA_A_63_78,A,OVS (1250 m),36C,SDHBb,-0.644068669
61_Lo_Heat_GA_A_32_67,A,OVS (1250 m),36C,SDHBa,-0.101099491
61_Lo_Heat_GA_A_32_67,A,OVS (1250 m),36C,SDHBb,-0.451541494
62_Hi_Heat_AA_C_27_60,C,CCR (3100 m),36C,SDHBa,-0.044878402
62_Hi_Heat_AA_C_27_60,C,CCR (3100 m),36C,SDHBb,-0.544266465
65_Lo_Cont_GA_A_26_62,A,OVS (1250 m),20C,SDHBa,-0.032706175
65_Lo_Cont_GA_A_26_62,A,OVS (1250 m),20C,SDHBb,-0.572267306
70_Lo_Cont_AA_A_76_9,A,OVS (1250 m),20C,SDHBa,-0.055007603
70_Lo_Cont_AA_A_76_9,A,OVS (1250 m),20C,SDHBb,-0.482965985
73_Lo_Heat_GG_C_25_69,C,OVS (1250 m),36C,SDHBa,-0.021820952
73_Lo_Heat_GG_C_25_69,C,OVS (1250 m),36C,SDHBb,-0.558520285
74_Lo_Heat_GG_A_85_91,A,OVS (1250 m),36C,SDHBa,-0.031028138
74_Lo_Heat_GG_A_85_91,A,OVS (1250 m),36C,SDHBb,-0.545987007
76_Lo_Heat_AA_C_30_73,C,OVS (1250 m),36C,SDHBa,-0.106812553
76_Lo_Heat_AA_C_30_73,C,OVS (1250 m),36C,SDHBb,-0.471151346
78_Hi_Heat_GA_C_7_38,C,CCR (3100 m),36C,SDHBa,-0.097915817
78_Hi_Heat_GA_C_7_38,C,CCR (3100 m),36C,SDHBb,-0.466310013
79_Lo_Heat_GA_C_1_42,C,OVS (1250 m),36C,SDHBa,-0.050476335
79_Lo_Heat_GA_C_1_42,C,OVS (1250 m),36C,SDHBb,-0.516140731
80_Hi_Heat_GG_C_60_77,C,CCR (3100 m),36C,SDHBa,-0.061837817
80_Hi_Heat_GG_C_60_77,C,CCR (3100 m),36C,SDHBb,-0.579092039
81_Hi_Heat_GA_A_4_45,A,CCR (3100 m),36C,SDHBa,-0.03044086
81_Hi_Heat_GA_A_4_45,A,CCR (3100 m),36C,SDHBb,-0.528329282
85_Lo_Cont_AA_C_41_56,C,OVS (1250 m),20C,SDHBa,-0.035065157
85_Lo_Cont_AA_C_41_56,C,OVS (1250 m),20C,SDHBb,-0.514849831
86_Hi_Cont_GA_C_21_46,C,CCR (3100 m),20C,SDHBa,-0.029016844
86_Hi_Cont_GA_C_21_46,C,CCR (3100 m),20C,SDHBb,-0.560893322
88_Lo_Cont_AA_A_42_30,A,OVS (1250 m),20C,SDHBa,-0.08177263
88_Lo_Cont_AA_A_42_30,A,OVS (1250 m),20C,SDHBb,-0.479468961
90_Hi_Cont_GG_A_62_32,A,CCR (3100 m),20C,SDHBa,-0.031942037
90_Hi_Cont_GG_A_62_32,A,CCR (3100 m),20C,SDHBb,-0.472834936
91_Hi_Cont_AA_A_67_4,A,CCR (3100 m),20C,SDHBa,-0.059105136
91_Hi_Cont_AA_A_67_4,A,CCR (3100 m),20C,SDHBb,-0.49256568
93_Lo_Cont_AA_A_49_61,A,OVS (1250 m),20C,SDHBa,-0.067034199
93_Lo_Cont_AA_A_49_61,A,OVS (1250 m),20C,SDHBb,-0.546128992
94_Lo_Cont_GA_A_40_49,A,OVS (1250 m),20C,SDHBa,-0.054190559
94_Lo_Cont_GA_A_40_49,A,OVS (1250 m),20C,SDHBb,-0.533144061
95_Lo_Cont_GA_A_36_39,A,OVS (1250 m),20C,SDHBa,-0.034284325
95_Lo_Cont_GA_A_36_39,A,OVS (1250 m),20C,SDHBb,-0.60641427
96_Hi_Cont_GA_A_84_59,A,CCR (3100 m),20C,SDHBa,-0.041584797
96_Hi_Cont_GA_A_84_59,A,CCR (3100 m),20C,SDHBb,-0.524010913
97_Lo_Heat_GG_A_16_54,A,OVS (1250 m),36C,SDHBa,-0.076491454
97_Lo_Heat_GG_A_16_54,A,OVS (1250 m),36C,SDHBb,-0.497540696
98_Hi_Heat_GG_A_47_79,A,CCR (3100 m),36C,SDHBa,-0.083632935
98_Hi_Heat_GG_A_47_79,A,CCR (3100 m),36C,SDHBb,-0.483865893
101_Hi_Heat_GA_A_66_86,A,CCR (3100 m),36C,SDHBa,-0.066139811
101_Hi_Heat_GA_A_66_86,A,CCR (3100 m),36C,SDHBb,-0.511796368
102_Lo_Heat_GA_A_90_94,A,OVS (1250 m),36C,SDHBa,-0.064458879
102_Lo_Heat_GA_A_90_94,A,OVS (1250 m),36C,SDHBb,-0.521247567
112_Hi_Heat_AA_A_24_51,A,CCR (3100 m),36C,SDHBa,-0.07258916
112_Hi_Heat_AA_A_24_51,A,CCR (3100 m),36C,SDHBb,-0.531244236
114_Lo_Cont_GG_A_46_24,A,OVS (1250 m),20C,SDHBa,-0.032337714
114_Lo_Cont_GG_A_46_24,A,OVS (1250 m),20C,SDHBb,-0.624206935
116_Lo_Cont_GA_A_87_21,A,OVS (1250 m),20C,SDHBa,-0.040023085
116_Lo_Cont_GA_A_87_21,A,OVS (1250 m),20C,SDHBb,-0.585597665
121_Lo_Cont_GA_C_20_64,C,OVS (1250 m),20C,SDHBa,-0.066779348
121_Lo_Cont_GA_C_20_64,C,OVS (1250 m),20C,SDHBb,-0.482251513
124_Hi_Cont_GG_C_75_53,C,CCR (3100 m),20C,SDHBa,-0.056890161
124_Hi_Cont_GG_C_75_53,C,CCR (3100 m),20C,SDHBb,-0.519461159
126_Lo_Cont_AA_A_28_11,A,OVS (1250 m),20C,SDHBa,-0.066313375
126_Lo_Cont_AA_A_28_11,A,OVS (1250 m),20C,SDHBb,-0.512710097
132_Lo_Heat_GA_C_29_72,C,OVS (1250 m),36C,SDHBa,-0.0277051
132_Lo_Heat_GA_C_29_72,C,OVS (1250 m),36C,SDHBb,-0.565635115
133_Lo_Heat_GA_C_53_84,C,OVS (1250 m),36C,SDHBa,-0.066678871
133_Lo_Heat_GA_C_53_84,C,OVS (1250 m),36C,SDHBb,-0.464652222
145_Lo_Cont_GA_C_2_29,C,OVS (1250 m),20C,SDHBa,-0.064064319
145_Lo_Cont_GA_C_2_29,C,OVS (1250 m),20C,SDHBb,-0.455152454
148_Lo_Cont_GG_C_69_27,C,OVS (1250 m),20C,SDHBa,-0.013896006
148_Lo_Cont_GG_C_69_27,C,OVS (1250 m),20C,SDHBb,-0.597828718
154_Hi_Heat_GA_A_92_96,A,CCR (3100 m),36C,SDHBa,-0.069488175
154_Hi_Heat_GA_A_92_96,A,CCR (3100 m),36C,SDHBb,-0.504414321
156_Lo_Heat_AA_C_55_85,C,OVS (1250 m),36C,SDHBa,-0.072948777
156_Lo_Heat_AA_C_55_85,C,OVS (1250 m),36C,SDHBb,-0.478328812
158_Lo_Heat_GA_C_91_95,C,OVS (1250 m),36C,SDHBa,-0.063838642
158_Lo_Heat_GA_C_91_95,C,OVS (1250 m),36C,SDHBb,-0.441571796
160_Lo_Heat_GG_C_6_36,C,OVS (1250 m),36C,SDHBa,-0.050980758
160_Lo_Heat_GG_C_6_36,C,OVS (1250 m),36C,SDHBb,-0.532796926
164_Hi_Heat_GA_C_73_88,C,CCR (3100 m),36C,SDHBa,-0.025624408
164_Hi_Heat_GA_C_73_88,C,CCR (3100 m),36C,SDHBb,-0.571554616
165_Hi_Heat_AA_A_78_75,A,CCR (3100 m),36C,SDHBa,-0.097622815
165_Hi_Heat_AA_A_78_75,A,CCR (3100 m),36C,SDHBb,-0.512538418
168_Hi_Heat_GG_A_12_52,A,CCR (3100 m),36C,SDHBa,-0.063551254
168_Hi_Heat_GG_A_12_52,A,CCR (3100 m),36C,SDHBb,-0.52701736
169_Hi_Heat_GG_C_15_37,C,CCR (3100 m),36C,SDHBa,-0.107827484
169_Hi_Heat_GG_C_15_37,C,CCR (3100 m),36C,SDHBb,-0.465274533
171_Lo_Cont_GG_C_88_22,C,OVS (1250 m),20C,SDHBa,-0.058650897
171_Lo_Cont_GG_C_88_22,C,OVS (1250 m),20C,SDHBb,-0.59852677
174_Lo_Cont_AA_C_86_43,C,OVS (1250 m),20C,SDHBa,-0.039582082
174_Lo_Cont_AA_C_86_43,C,OVS (1250 m),20C,SDHBb,-0.547520308
175_Hi_Cont_GG_C_61_48,C,CCR (3100 m),20C,SDHBa,-0.076317283
175_Hi_Cont_GG_C_61_48,C,CCR (3100 m),20C,SDHBb,-0.490518077
177_Hi_Cont_AA_A_51_40,A,CCR (3100 m),20C,SDHBa,-0.020282029
177_Hi_Cont_AA_A_51_40,A,CCR (3100 m),20C,SDHBb,-0.53017747
184_Hi_Heat_GA_C_10_47,C,CCR (3100 m),36C,SDHBa,-0.045718533
184_Hi_Heat_GA_C_10_47,C,CCR (3100 m),36C,SDHBb,-0.428886796
186_Lo_Heat_GG_A_14_57,A,OVS (1250 m),36C,SDHBa,-0.070296536
186_Lo_Heat_GG_A_14_57,A,OVS (1250 m),36C,SDHBb,-0.482279032
191_Lo_Cont_GG_A_18_1,A,OVS (1250 m),20C,SDHBa,-0.003211527
191_Lo_Cont_GG_A_18_1,A,OVS (1250 m),20C,SDHBb,-0.682492287
192_Hi_Cont_GA_C_79_25,C,CCR (3100 m),20C,SDHBa,-0.00734278
192_Hi_Cont_GA_C_79_25,C,CCR (3100 m),20C,SDHBb,-0.545716687
193_Hi_Cont_GA_C_74_5,C,CCR (3100 m),20C,SDHBa,-0.051140456
193_Hi_Cont_GA_C_74_5,C,CCR (3100 m),20C,SDHBb,-0.494985281
196_Lo_Cont_GA_C_81_8,C,OVS (1250 m),20C,SDHBa,-0.034204892
196_Lo_Cont_GA_C_81_8,C,OVS (1250 m),20C,SDHBb,-0.586089958
197_Hi_Cont_GA_A_96_10,A,CCR (3100 m),20C,SDHBa,-0.055732784
197_Hi_Cont_GA_A_96_10,A,CCR (3100 m),20C,SDHBb,-0.448084004
199_Hi_Cont_GA_C_70_6,C,CCR (3100 m),20C,SDHBa,-0.040434104
199_Hi_Cont_GA_C_70_6,C,CCR (3100 m),20C,SDHBb,-0.437920348
200_Lo_Cont_GG_C_35_14,C,OVS (1250 m),20C,SDHBa,-0.02671932
200_Lo_Cont_GG_C_35_14,C,OVS (1250 m),20C,SDHBb,-0.507555726
207_Lo_Heat_GG_C_3_44,C,OVS (1250 m),36C,SDHBa,-0.123556157
207_Lo_Heat_GG_C_3_44,C,OVS (1250 m),36C,SDHBb,-0.452127125
210_Lo_Cont_AA_A_64_28,A,OVS (1250 m),20C,SDHBa,-0.056815322
210_Lo_Cont_AA_A_64_28,A,OVS (1250 m),20C,SDHBb,-0.502661381
212_Lo_Cont_GA_C_94_80,C,OVS (1250 m),20C,SDHBa,-0.024007546
212_Lo_Cont_GA_C_94_80,C,OVS (1250 m),20C,SDHBb,-0.591931699
213_Lo_Cont_GA_A_58_7,A,OVS (1250 m),20C,SDHBa,-0.045247341
213_Lo_Cont_GA_A_58_7,A,OVS (1250 m),20C,SDHBb,-0.490565096
214_Lo_Cont_GG_C_34_17,C,OVS (1250 m),20C,SDHBa,-0.039935541
214_Lo_Cont_GG_C_34_17,C,OVS (1250 m),20C,SDHBb,-0.646847061
217_Lo_Heat_AA_A_77_89,A,OVS (1250 m),36C,SDHBa,-0.051602229
217_Lo_Heat_AA_A_77_89,A,OVS (1250 m),36C,SDHBb,-0.529648902
220_Lo_Heat_GA_C_45_82,C,OVS (1250 m),36C,SDHBa,-0.027022901
220_Lo_Heat_GA_C_45_82,C,OVS (1250 m),36C,SDHBb,-0.554657533
221_Lo_Heat_GG_C_44_81,C,OVS (1250 m),36C,SDHBa,-0.116284052
221_Lo_Heat_GG_C_44_81,C,OVS (1250 m),36C,SDHBb,-0.441421079
223_Hi_Heat_GG_C_39_58,C,CCR (3100 m),36C,SDHBa,-0.114638443
223_Hi_Heat_GG_C_39_58,C,CCR (3100 m),36C,SDHBb,-0.492394682
229_Lo_Cont_GA_A_71_13,A,OVS (1250 m),20C,SDHBa,-0.040183065
229_Lo_Cont_GA_A_71_13,A,OVS (1250 m),20C,SDHBb,-0.583946076
232_Hi_Cont_AA_A_54_63,A,CCR (3100 m),20C,SDHBa,-0.053782219
232_Hi_Cont_AA_A_54_63,A,CCR (3100 m),20C,SDHBb,-0.535182947
233_Hi_Cont_AA_A_43_3,A,CCR (3100 m),20C,SDHBa,-0.055599363
233_Hi_Cont_AA_A_43_3,A,CCR (3100 m),20C,SDHBb,-0.530630124",
header=TRUE)
Upvotes: 1
Views: 34
Reputation: 125373
Besides filtering the data and using two geom_boxplot
a second option to achieve your desired result would be to use the original dataset but set the group
aes appropriately by including Gene
. Additionally we have to position="identity"
to prevent that the box plots get dodged by Gene
.
library(ggplot2)
df$Elev <- factor(df$Elev, levels = c("OVS (1250 m)", "CCR (3100 m)"))
df$tRNA <- factor(df$tRNA, levels = c("A", "C"))
df$Temperature <- factor(df$Temperature)
elev_colors <- c("OVS (1250 m)" = "#D2B48C", "CCR (3100 m)" = "#90EE90")
ggplot(
data = df,
aes(x = interaction(tRNA, Elev), y = Expression)
) +
geom_boxplot(
aes(
fill = Elev,
group = interaction(tRNA, Elev, Gene)
),
color = "black", outlier.shape = NA, alpha = 0.5,
position = "identity"
) +
geom_jitter(
aes(color = Temperature),
position = position_jitter(width = 0.2),
size = 2, alpha = 0.8
) +
geom_hline(yintercept = -0.367, linetype = "dashed", color = "black") +
scale_color_manual(values = c("20C" = "blue", "36C" = "red")) +
scale_fill_manual(values = elev_colors, name = "Elevation") +
scale_x_discrete(labels = c("A", "C", "A", "C")) +
scale_y_continuous(
limits = c(-0.7, 0.05),
breaks = seq(-0.7, 0.05, by = 0.1),
labels = function(x) sprintf("%.2f", x),
sec.axis = dup_axis(
breaks = c(-.05, -.525),
labels = c("SDHBa", "SDHBb"),
name = NULL
)
) +
labs(
x = NULL,
y = "Transformed normalized gene expression",
color = "Temperature"
) +
theme_bw() +
theme(
legend.position = "right",
legend.title = element_text(size = 12),
legend.text = element_text(size = 10),
axis.title.y = element_text(size = 14),
axis.text = element_text(size = 12),
axis.text.y.right = element_text(angle = -90, hjust = .5),
panel.grid = element_blank(), # Remove major grid
panel.border = element_blank(), # Remove all borders
axis.line = element_line(color = "black") # Keep only x and y axis lines
)
Upvotes: 0
Reputation: 22034
If you want them to be the same color, but just in the same plot, you can pass in the two subset datasets to the same plot in different calls to geom_boxplot()
. The points, then could just be a call from the original dataset.
df <- read.csv(text="BeetleID,tRNA,Elev,Temperature,Gene,Expression
3_Hi_Heat_GA_C_93_83,C,CCR (3100 m),36C,SDHBa,-0.02533343
3_Hi_Heat_GA_C_93_83,C,CCR (3100 m),36C,SDHBb,-0.659586909
4_Hi_Heat_GG_A_50_70,A,CCR (3100 m),36C,SDHBa,-0.057812969
4_Hi_Heat_GG_A_50_70,A,CCR (3100 m),36C,SDHBb,-0.545023063
7_Hi_Heat_GG_C_23_41,C,CCR (3100 m),36C,SDHBa,-0.053967406
7_Hi_Heat_GG_C_23_41,C,CCR (3100 m),36C,SDHBb,-0.534405563
8_Hi_Heat_AA_A_83_74,A,CCR (3100 m),36C,SDHBa,-0.075926641
8_Hi_Heat_AA_A_83_74,A,CCR (3100 m),36C,SDHBb,-0.506515175
10_Hi_Cont_GA_A_8_20,A,CCR (3100 m),20C,SDHBa,-0.041494318
10_Hi_Cont_GA_A_8_20,A,CCR (3100 m),20C,SDHBb,-0.499795764
11_Lo_Heat_GG_A_56_65,A,OVS (1250 m),36C,SDHBa,-0.098877264
11_Lo_Heat_GG_A_56_65,A,OVS (1250 m),36C,SDHBb,-0.476366036
12_Hi_Cont_GA_A_13_23,A,CCR (3100 m),20C,SDHBa,-0.110970289
12_Hi_Cont_GA_A_13_23,A,CCR (3100 m),20C,SDHBb,-0.402882299
13_Hi_Cont_AA_A_72_12,A,CCR (3100 m),20C,SDHBa,-0.060011559
13_Hi_Cont_AA_A_72_12,A,CCR (3100 m),20C,SDHBb,-0.464097841
18_Hi_Cont_GG_A_89_16,A,CCR (3100 m),20C,SDHBa,-0.083120881
18_Hi_Cont_GG_A_89_16,A,CCR (3100 m),20C,SDHBb,-0.537892242
22_Lo_Heat_AA_A_68_87,A,OVS (1250 m),36C,SDHBa,-0.060261124
22_Lo_Heat_AA_A_68_87,A,OVS (1250 m),36C,SDHBb,-0.513480031
23_Lo_Heat_AA_C_65_90,C,OVS (1250 m),36C,SDHBa,-0.056169173
23_Lo_Heat_AA_C_65_90,C,OVS (1250 m),36C,SDHBb,-0.580234842
28_Hi_Heat_GG_C_38_50,C,CCR (3100 m),36C,SDHBa,-0.073028489
28_Hi_Heat_GG_C_38_50,C,CCR (3100 m),36C,SDHBb,-0.537116943
29_Hi_Heat_AA_C_37_76,C,CCR (3100 m),36C,SDHBa,-0.054720957
29_Hi_Heat_AA_C_37_76,C,CCR (3100 m),36C,SDHBb,-0.570217471
31_Hi_Heat_GG_C_17_55,C,CCR (3100 m),36C,SDHBa,-0.076168723
31_Hi_Heat_GG_C_17_55,C,CCR (3100 m),36C,SDHBb,-0.539385044
32_Hi_Cont_GG_A_48_34,A,CCR (3100 m),20C,SDHBa,-0.081895389
32_Hi_Cont_GG_A_48_34,A,CCR (3100 m),20C,SDHBb,-0.45818182
33_Hi_Cont_GG_A_59_31,A,CCR (3100 m),20C,SDHBa,-0.068278843
33_Hi_Cont_GG_A_59_31,A,CCR (3100 m),20C,SDHBb,-0.534856386
34_Hi_Cont_GA_A_33_26,A,CCR (3100 m),20C,SDHBa,-0.060344841
34_Hi_Cont_GA_A_33_26,A,CCR (3100 m),20C,SDHBb,-0.512083636
37_Lo_Cont_GG_A_5_18,A,OVS (1250 m),20C,SDHBa,-0.038248368
37_Lo_Cont_GG_A_5_18,A,OVS (1250 m),20C,SDHBb,-0.508085757
42_Lo_Cont_AA_A_95_2,A,OVS (1250 m),20C,SDHBa,-0.060784951
42_Lo_Cont_AA_A_95_2,A,OVS (1250 m),20C,SDHBb,-0.595588407
43_Hi_Cont_GG_C_52_19,C,CCR (3100 m),20C,SDHBa,-0.061972349
43_Hi_Cont_GG_C_52_19,C,CCR (3100 m),20C,SDHBb,-0.535617548
45_Lo_Cont_GG_A_19_15,A,OVS (1250 m),20C,SDHBa,-0.034806497
45_Lo_Cont_GG_A_19_15,A,OVS (1250 m),20C,SDHBb,-0.595253564
51_Hi_Heat_GA_C_11_33,C,CCR (3100 m),36C,SDHBa,-0.031251811
51_Hi_Heat_GA_C_11_33,C,CCR (3100 m),36C,SDHBb,-0.548092591
53_Lo_Heat_GG_C_80_92,C,OVS (1250 m),36C,SDHBa,-0.024720973
53_Lo_Heat_GG_C_80_92,C,OVS (1250 m),36C,SDHBb,-0.525368938
54_Hi_Heat_GA_A_22_66,A,CCR (3100 m),36C,SDHBa,-0.058442322
54_Hi_Heat_GA_A_22_66,A,CCR (3100 m),36C,SDHBb,-0.553941996
55_Lo_Heat_GA_A_82_93,A,OVS (1250 m),36C,SDHBa,-0.037887802
55_Lo_Heat_GA_A_82_93,A,OVS (1250 m),36C,SDHBb,-0.597654886
57_Lo_Heat_GA_A_57_68,A,OVS (1250 m),36C,SDHBa,-0.042726416
57_Lo_Heat_GA_A_57_68,A,OVS (1250 m),36C,SDHBb,-0.492090089
58_Lo_Heat_GG_A_31_71,A,OVS (1250 m),36C,SDHBa,-0.037097405
58_Lo_Heat_GG_A_31_71,A,OVS (1250 m),36C,SDHBb,-0.525032018
59_Hi_Heat_GA_A_9_35,A,CCR (3100 m),36C,SDHBa,-0.081747093
59_Hi_Heat_GA_A_9_35,A,CCR (3100 m),36C,SDHBb,-0.511436244
60_Lo_Heat_GA_A_63_78,A,OVS (1250 m),36C,SDHBa,0.010538853
60_Lo_Heat_GA_A_63_78,A,OVS (1250 m),36C,SDHBb,-0.644068669
61_Lo_Heat_GA_A_32_67,A,OVS (1250 m),36C,SDHBa,-0.101099491
61_Lo_Heat_GA_A_32_67,A,OVS (1250 m),36C,SDHBb,-0.451541494
62_Hi_Heat_AA_C_27_60,C,CCR (3100 m),36C,SDHBa,-0.044878402
62_Hi_Heat_AA_C_27_60,C,CCR (3100 m),36C,SDHBb,-0.544266465
65_Lo_Cont_GA_A_26_62,A,OVS (1250 m),20C,SDHBa,-0.032706175
65_Lo_Cont_GA_A_26_62,A,OVS (1250 m),20C,SDHBb,-0.572267306
70_Lo_Cont_AA_A_76_9,A,OVS (1250 m),20C,SDHBa,-0.055007603
70_Lo_Cont_AA_A_76_9,A,OVS (1250 m),20C,SDHBb,-0.482965985
73_Lo_Heat_GG_C_25_69,C,OVS (1250 m),36C,SDHBa,-0.021820952
73_Lo_Heat_GG_C_25_69,C,OVS (1250 m),36C,SDHBb,-0.558520285
74_Lo_Heat_GG_A_85_91,A,OVS (1250 m),36C,SDHBa,-0.031028138
74_Lo_Heat_GG_A_85_91,A,OVS (1250 m),36C,SDHBb,-0.545987007
76_Lo_Heat_AA_C_30_73,C,OVS (1250 m),36C,SDHBa,-0.106812553
76_Lo_Heat_AA_C_30_73,C,OVS (1250 m),36C,SDHBb,-0.471151346
78_Hi_Heat_GA_C_7_38,C,CCR (3100 m),36C,SDHBa,-0.097915817
78_Hi_Heat_GA_C_7_38,C,CCR (3100 m),36C,SDHBb,-0.466310013
79_Lo_Heat_GA_C_1_42,C,OVS (1250 m),36C,SDHBa,-0.050476335
79_Lo_Heat_GA_C_1_42,C,OVS (1250 m),36C,SDHBb,-0.516140731
80_Hi_Heat_GG_C_60_77,C,CCR (3100 m),36C,SDHBa,-0.061837817
80_Hi_Heat_GG_C_60_77,C,CCR (3100 m),36C,SDHBb,-0.579092039
81_Hi_Heat_GA_A_4_45,A,CCR (3100 m),36C,SDHBa,-0.03044086
81_Hi_Heat_GA_A_4_45,A,CCR (3100 m),36C,SDHBb,-0.528329282
85_Lo_Cont_AA_C_41_56,C,OVS (1250 m),20C,SDHBa,-0.035065157
85_Lo_Cont_AA_C_41_56,C,OVS (1250 m),20C,SDHBb,-0.514849831
86_Hi_Cont_GA_C_21_46,C,CCR (3100 m),20C,SDHBa,-0.029016844
86_Hi_Cont_GA_C_21_46,C,CCR (3100 m),20C,SDHBb,-0.560893322
88_Lo_Cont_AA_A_42_30,A,OVS (1250 m),20C,SDHBa,-0.08177263
88_Lo_Cont_AA_A_42_30,A,OVS (1250 m),20C,SDHBb,-0.479468961
90_Hi_Cont_GG_A_62_32,A,CCR (3100 m),20C,SDHBa,-0.031942037
90_Hi_Cont_GG_A_62_32,A,CCR (3100 m),20C,SDHBb,-0.472834936
91_Hi_Cont_AA_A_67_4,A,CCR (3100 m),20C,SDHBa,-0.059105136
91_Hi_Cont_AA_A_67_4,A,CCR (3100 m),20C,SDHBb,-0.49256568
93_Lo_Cont_AA_A_49_61,A,OVS (1250 m),20C,SDHBa,-0.067034199
93_Lo_Cont_AA_A_49_61,A,OVS (1250 m),20C,SDHBb,-0.546128992
94_Lo_Cont_GA_A_40_49,A,OVS (1250 m),20C,SDHBa,-0.054190559
94_Lo_Cont_GA_A_40_49,A,OVS (1250 m),20C,SDHBb,-0.533144061
95_Lo_Cont_GA_A_36_39,A,OVS (1250 m),20C,SDHBa,-0.034284325
95_Lo_Cont_GA_A_36_39,A,OVS (1250 m),20C,SDHBb,-0.60641427
96_Hi_Cont_GA_A_84_59,A,CCR (3100 m),20C,SDHBa,-0.041584797
96_Hi_Cont_GA_A_84_59,A,CCR (3100 m),20C,SDHBb,-0.524010913
97_Lo_Heat_GG_A_16_54,A,OVS (1250 m),36C,SDHBa,-0.076491454
97_Lo_Heat_GG_A_16_54,A,OVS (1250 m),36C,SDHBb,-0.497540696
98_Hi_Heat_GG_A_47_79,A,CCR (3100 m),36C,SDHBa,-0.083632935
98_Hi_Heat_GG_A_47_79,A,CCR (3100 m),36C,SDHBb,-0.483865893
101_Hi_Heat_GA_A_66_86,A,CCR (3100 m),36C,SDHBa,-0.066139811
101_Hi_Heat_GA_A_66_86,A,CCR (3100 m),36C,SDHBb,-0.511796368
102_Lo_Heat_GA_A_90_94,A,OVS (1250 m),36C,SDHBa,-0.064458879
102_Lo_Heat_GA_A_90_94,A,OVS (1250 m),36C,SDHBb,-0.521247567
112_Hi_Heat_AA_A_24_51,A,CCR (3100 m),36C,SDHBa,-0.07258916
112_Hi_Heat_AA_A_24_51,A,CCR (3100 m),36C,SDHBb,-0.531244236
114_Lo_Cont_GG_A_46_24,A,OVS (1250 m),20C,SDHBa,-0.032337714
114_Lo_Cont_GG_A_46_24,A,OVS (1250 m),20C,SDHBb,-0.624206935
116_Lo_Cont_GA_A_87_21,A,OVS (1250 m),20C,SDHBa,-0.040023085
116_Lo_Cont_GA_A_87_21,A,OVS (1250 m),20C,SDHBb,-0.585597665
121_Lo_Cont_GA_C_20_64,C,OVS (1250 m),20C,SDHBa,-0.066779348
121_Lo_Cont_GA_C_20_64,C,OVS (1250 m),20C,SDHBb,-0.482251513
124_Hi_Cont_GG_C_75_53,C,CCR (3100 m),20C,SDHBa,-0.056890161
124_Hi_Cont_GG_C_75_53,C,CCR (3100 m),20C,SDHBb,-0.519461159
126_Lo_Cont_AA_A_28_11,A,OVS (1250 m),20C,SDHBa,-0.066313375
126_Lo_Cont_AA_A_28_11,A,OVS (1250 m),20C,SDHBb,-0.512710097
132_Lo_Heat_GA_C_29_72,C,OVS (1250 m),36C,SDHBa,-0.0277051
132_Lo_Heat_GA_C_29_72,C,OVS (1250 m),36C,SDHBb,-0.565635115
133_Lo_Heat_GA_C_53_84,C,OVS (1250 m),36C,SDHBa,-0.066678871
133_Lo_Heat_GA_C_53_84,C,OVS (1250 m),36C,SDHBb,-0.464652222
145_Lo_Cont_GA_C_2_29,C,OVS (1250 m),20C,SDHBa,-0.064064319
145_Lo_Cont_GA_C_2_29,C,OVS (1250 m),20C,SDHBb,-0.455152454
148_Lo_Cont_GG_C_69_27,C,OVS (1250 m),20C,SDHBa,-0.013896006
148_Lo_Cont_GG_C_69_27,C,OVS (1250 m),20C,SDHBb,-0.597828718
154_Hi_Heat_GA_A_92_96,A,CCR (3100 m),36C,SDHBa,-0.069488175
154_Hi_Heat_GA_A_92_96,A,CCR (3100 m),36C,SDHBb,-0.504414321
156_Lo_Heat_AA_C_55_85,C,OVS (1250 m),36C,SDHBa,-0.072948777
156_Lo_Heat_AA_C_55_85,C,OVS (1250 m),36C,SDHBb,-0.478328812
158_Lo_Heat_GA_C_91_95,C,OVS (1250 m),36C,SDHBa,-0.063838642
158_Lo_Heat_GA_C_91_95,C,OVS (1250 m),36C,SDHBb,-0.441571796
160_Lo_Heat_GG_C_6_36,C,OVS (1250 m),36C,SDHBa,-0.050980758
160_Lo_Heat_GG_C_6_36,C,OVS (1250 m),36C,SDHBb,-0.532796926
164_Hi_Heat_GA_C_73_88,C,CCR (3100 m),36C,SDHBa,-0.025624408
164_Hi_Heat_GA_C_73_88,C,CCR (3100 m),36C,SDHBb,-0.571554616
165_Hi_Heat_AA_A_78_75,A,CCR (3100 m),36C,SDHBa,-0.097622815
165_Hi_Heat_AA_A_78_75,A,CCR (3100 m),36C,SDHBb,-0.512538418
168_Hi_Heat_GG_A_12_52,A,CCR (3100 m),36C,SDHBa,-0.063551254
168_Hi_Heat_GG_A_12_52,A,CCR (3100 m),36C,SDHBb,-0.52701736
169_Hi_Heat_GG_C_15_37,C,CCR (3100 m),36C,SDHBa,-0.107827484
169_Hi_Heat_GG_C_15_37,C,CCR (3100 m),36C,SDHBb,-0.465274533
171_Lo_Cont_GG_C_88_22,C,OVS (1250 m),20C,SDHBa,-0.058650897
171_Lo_Cont_GG_C_88_22,C,OVS (1250 m),20C,SDHBb,-0.59852677
174_Lo_Cont_AA_C_86_43,C,OVS (1250 m),20C,SDHBa,-0.039582082
174_Lo_Cont_AA_C_86_43,C,OVS (1250 m),20C,SDHBb,-0.547520308
175_Hi_Cont_GG_C_61_48,C,CCR (3100 m),20C,SDHBa,-0.076317283
175_Hi_Cont_GG_C_61_48,C,CCR (3100 m),20C,SDHBb,-0.490518077
177_Hi_Cont_AA_A_51_40,A,CCR (3100 m),20C,SDHBa,-0.020282029
177_Hi_Cont_AA_A_51_40,A,CCR (3100 m),20C,SDHBb,-0.53017747
184_Hi_Heat_GA_C_10_47,C,CCR (3100 m),36C,SDHBa,-0.045718533
184_Hi_Heat_GA_C_10_47,C,CCR (3100 m),36C,SDHBb,-0.428886796
186_Lo_Heat_GG_A_14_57,A,OVS (1250 m),36C,SDHBa,-0.070296536
186_Lo_Heat_GG_A_14_57,A,OVS (1250 m),36C,SDHBb,-0.482279032
191_Lo_Cont_GG_A_18_1,A,OVS (1250 m),20C,SDHBa,-0.003211527
191_Lo_Cont_GG_A_18_1,A,OVS (1250 m),20C,SDHBb,-0.682492287
192_Hi_Cont_GA_C_79_25,C,CCR (3100 m),20C,SDHBa,-0.00734278
192_Hi_Cont_GA_C_79_25,C,CCR (3100 m),20C,SDHBb,-0.545716687
193_Hi_Cont_GA_C_74_5,C,CCR (3100 m),20C,SDHBa,-0.051140456
193_Hi_Cont_GA_C_74_5,C,CCR (3100 m),20C,SDHBb,-0.494985281
196_Lo_Cont_GA_C_81_8,C,OVS (1250 m),20C,SDHBa,-0.034204892
196_Lo_Cont_GA_C_81_8,C,OVS (1250 m),20C,SDHBb,-0.586089958
197_Hi_Cont_GA_A_96_10,A,CCR (3100 m),20C,SDHBa,-0.055732784
197_Hi_Cont_GA_A_96_10,A,CCR (3100 m),20C,SDHBb,-0.448084004
199_Hi_Cont_GA_C_70_6,C,CCR (3100 m),20C,SDHBa,-0.040434104
199_Hi_Cont_GA_C_70_6,C,CCR (3100 m),20C,SDHBb,-0.437920348
200_Lo_Cont_GG_C_35_14,C,OVS (1250 m),20C,SDHBa,-0.02671932
200_Lo_Cont_GG_C_35_14,C,OVS (1250 m),20C,SDHBb,-0.507555726
207_Lo_Heat_GG_C_3_44,C,OVS (1250 m),36C,SDHBa,-0.123556157
207_Lo_Heat_GG_C_3_44,C,OVS (1250 m),36C,SDHBb,-0.452127125
210_Lo_Cont_AA_A_64_28,A,OVS (1250 m),20C,SDHBa,-0.056815322
210_Lo_Cont_AA_A_64_28,A,OVS (1250 m),20C,SDHBb,-0.502661381
212_Lo_Cont_GA_C_94_80,C,OVS (1250 m),20C,SDHBa,-0.024007546
212_Lo_Cont_GA_C_94_80,C,OVS (1250 m),20C,SDHBb,-0.591931699
213_Lo_Cont_GA_A_58_7,A,OVS (1250 m),20C,SDHBa,-0.045247341
213_Lo_Cont_GA_A_58_7,A,OVS (1250 m),20C,SDHBb,-0.490565096
214_Lo_Cont_GG_C_34_17,C,OVS (1250 m),20C,SDHBa,-0.039935541
214_Lo_Cont_GG_C_34_17,C,OVS (1250 m),20C,SDHBb,-0.646847061
217_Lo_Heat_AA_A_77_89,A,OVS (1250 m),36C,SDHBa,-0.051602229
217_Lo_Heat_AA_A_77_89,A,OVS (1250 m),36C,SDHBb,-0.529648902
220_Lo_Heat_GA_C_45_82,C,OVS (1250 m),36C,SDHBa,-0.027022901
220_Lo_Heat_GA_C_45_82,C,OVS (1250 m),36C,SDHBb,-0.554657533
221_Lo_Heat_GG_C_44_81,C,OVS (1250 m),36C,SDHBa,-0.116284052
221_Lo_Heat_GG_C_44_81,C,OVS (1250 m),36C,SDHBb,-0.441421079
223_Hi_Heat_GG_C_39_58,C,CCR (3100 m),36C,SDHBa,-0.114638443
223_Hi_Heat_GG_C_39_58,C,CCR (3100 m),36C,SDHBb,-0.492394682
229_Lo_Cont_GA_A_71_13,A,OVS (1250 m),20C,SDHBa,-0.040183065
229_Lo_Cont_GA_A_71_13,A,OVS (1250 m),20C,SDHBb,-0.583946076
232_Hi_Cont_AA_A_54_63,A,CCR (3100 m),20C,SDHBa,-0.053782219
232_Hi_Cont_AA_A_54_63,A,CCR (3100 m),20C,SDHBb,-0.535182947
233_Hi_Cont_AA_A_43_3,A,CCR (3100 m),20C,SDHBa,-0.055599363
233_Hi_Cont_AA_A_43_3,A,CCR (3100 m),20C,SDHBb,-0.530630124",
header=TRUE)
library(ggplot2)
library(dplyr)
#>
df$Elev <- factor(df$Elev, levels = c("OVS (1250 m)", "CCR (3100 m)"))
df$tRNA <- factor(df$tRNA, levels = c("A", "C"))
df$Temperature <- factor(df$Temperature)
df_sdhba <- df %>% filter(Gene == "SDHBa")
df_sdhbb <- df %>% filter(Gene == "SDHBb")
elev_colors <- c("OVS (1250 m)" = "#D2B48C", "CCR (3100 m)" = "#90EE90")
ggplot() +
geom_boxplot(data = df_sdhba, aes(x = interaction(tRNA, Elev), y = Expression, fill = Elev), color = "black", outlier.shape = NA, alpha = 0.5) +
geom_boxplot(data = df_sdhbb, aes(x = interaction(tRNA, Elev), y = Expression, fill = Elev), color = "black", outlier.shape = NA, alpha = 0.5, inherit.aes = FALSE) +
geom_jitter(data = df, aes(x = interaction(tRNA, Elev), y = Expression, color = Temperature), position = position_jitter(width = 0.2),
size = 2, alpha = 0.8, inherit.aes = FALSE) +
geom_hline(yintercept = -0.367, linetype = "dashed", color = "black") +
scale_color_manual(values = c("20C" = "blue", "36C" = "red")) +
scale_fill_manual(values = elev_colors, name = "Elevation") +
scale_x_discrete(labels = c("A", "C", "A", "C")) +
scale_y_continuous(limits = c(-0.7, 0.05),
breaks = seq(-0.7, 0.05, by = 0.1),
labels = function(x) sprintf("%.2f", x),
sec.axis = sec_axis(transform = function(x)x, breaks = c(-.05, -.525), labels=c("SDHBa", "SDHBb"))) +
labs(y = "Transformed normalized gene expression",
color = "Temperature") +
theme_bw() +
theme(
legend.position = "right",
legend.title = element_text(size = 12),
legend.text = element_text(size = 10),
axis.title.x = element_blank(), # Remove x-axis label
axis.title.y = element_text(size = 14),
axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 12),
axis.text.y.right = element_text(angle=-90, hjust=.5),
panel.grid.major = element_blank(), # Remove major grid
panel.grid.minor = element_blank(), # Remove minor grid
panel.border = element_blank(), # Remove all borders
axis.line.x = element_line(color = "black"), # Keep only x and y axis lines
axis.line.y = element_line(color = "black")
)
Created on 2025-03-02 with reprex v2.1.1.9000
Upvotes: 1