library(xlsx)
library(plotly)
library(ggthemes)
plotdata = day1_3[1:40,] # do graph also for 50 
plotdata = droplevels(plotdata)
plotdata$gene = factor(plotdata$gene, levels =  c(as.character(plotdata$gene)))
plotdata$AbsPCA_variance = abs(plotdata$PCA_variance)
plotdata
plot1 = plot_ly( data = plotdata
        ,x = ~gene
        ,y = abs(plotdata$PCA_variance)
        ,color = ~regulator
        ,type = 'bar'
)
plot1 = layout(plot1
       ,legend = list(title = "Regulator", y = 1, x = 0.9)
       ,yaxis = list(range = c(min(abs(plotdata$PCA_variance))*0.999, max(abs(plotdata$PCA_variance))*1.001), title = "Absolute PCA variance")
       ,width = 1000
       ,margin = list(b=-20)
       )
Specifying width/height in layout() is now deprecated.
Please specify in ggplotly() or plot_ly()
plot1
n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors
n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors
n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors
n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors

# plotly_IMAGE(plot1, format = "png", out_file = "40.png")
# plot(abs(plotdata$PCA_variance))
plot1 = ggplot(data = plotdata, aes(x = gene, y = AbsPCA_variance, color = regulator, label = regulator)) + 
  geom_point(size = 10) +
  geom_segment(aes(x = gene, xend = gene, 
                   y = 0.0226, yend = AbsPCA_variance, 
                   color = regulator), size = 2, alpha = 0.5) + 
  scale_y_continuous(limits = c(0.0226, 0.02288)) +
  geom_text(color = 'white', size = 3) + 
  theme_minimal() +
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) + 
  coord_flip() +
  labs(y = "Absolute PCA Variance", x = "Genes", color = "Regulator", family = 'TT Times New Roman')  
  # scale_colour_brewer(palette = 'Paired')
  # scale_fill_manual(values=c("#CC6666", "#9999CC", "#66CC99"))
plot1

library(extrafont)
Registering fonts with R
font_import()
library(ggalt)
plot2 = ggplot(data = plotdata, aes(x = plotdata$gene, y = plotdata$AbsPCA_variance, color = plotdata$regulator, label = plotdata$regulator)) + 
  geom_lollipop(size = 5) + 
  # scale_y_continuous(limits = c(0.0227, 0.02288)) +
  theme_minimal()
plot2
# Ilana ask for table like that
write.csv(day1_3[1:50,c(1,10,2,4,5,6)], file = "Data from Tsviya about genes variance.csv")

Ilana manually currated some “unknown”" regulators and find matching regulators for top 50 hits.

additional = read.xlsx("data/genes_with_highestVariance_July18 +manually_currated.xlsx",1)
levels(additional$regulator) = c(levels(additional$regulator), levels(additional$manually.regulator))
additional$regulator[!is.na(additional$manually.regulator)] = additional$manually.regulator[!is.na(additional$manually.regulator)]

plotdata = additional[1:50,] # do graph also for 50 
plotdata = droplevels(plotdata)
plotdata$gene = factor(plotdata$gene, levels =  c(as.character(plotdata$gene)))
plotdata$AbsPCA_variance = abs(plotdata$PCA_variance)
plotdata
plot2 = plot_ly( data = plotdata
        ,x = ~gene
        ,y = abs(plotdata$PCA_variance)
        ,color = ~regulator
        ,type = 'bar'
        ,width = 1200
)
plot2 = layout(plot2
       ,legend = list(title = "Regulator")
       ,yaxis = list(range = c(min(abs(plotdata$PCA_variance))*0.999, max(abs(plotdata$PCA_variance))*1.001))
       ,xaxis = list(labels = "outside", tickfont=list(size = 16), automargin = T, showline = F, zeroline = T)
)
plot2

Source code available here.

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkoeGxzeCkNCg0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KGdndGhlbWVzKQ0KYGBgDQoNCmBgYHtyfQ0KIyBmaWxlMV8zID0gcmVhZC54bHN4KCJkYXRhL2dlbmVzX3dpdGhfaGlnaGVzdFZhcmlhbmNlX0p1bHkxOCAoMSkueGxzeCIsMSkNCmZpbGUxXzMgPSB0cnlDYXRjaChyZWFkLnhsc3goImRhdGEvZ2VuZXNfd2l0aF9oaWdoZXN0VmFyaWFuY2VfSnVseTE4ICttYW51YWxseV9jdXJyYXRlZC54bHN4IiwxKSwgZmlsZTFfMyA9IHJlYWQuY3N2KCJodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC9lLzJQQUNYLTF2UnQ2YmF6WFlRbVlEejRyZU9FZk43N1Q3MURfRnUxR3dmeHFkX1EyR2ZualIwUjBOVU5qd3BOS3pBX0hMZ3hyckRscHRIUXhFVWtuQnVzL3B1Yj9vdXRwdXQ9Y3N2IikpDQpmaWxlNiA9IHRyeUNhdGNoKHJlYWQueGxzeCgiZGF0YS9nZW5lc193aXRoX2hpZ2hlc3RWYXJpYW5jZV9KdWx5MTggKDEpLnhsc3giLDIpLCBmaWxlNiA9IHJlYWQuY3N2KCJodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC9lLzJQQUNYLTF2UzlaQS1KTjhrNFJDR3EyZ3lPUTJ0QmpGS1RIZjZkb1pWMjZqZVpSdkhYaldnQVkzQ0pkbm1mTjVPRjljT2RsaXNGMW8xdGVaMkY3MXV6L3B1Yj9naWQ9OTMyOTkwNjQ1JnNpbmdsZT10cnVlJm91dHB1dD1jc3YiKSkNCg0KIyBkYXkxXzMgPSBmaWxlMV8zWzI6bnJvdyhmaWxlMV8zKSwxOjEwXQ0KZGF5MV8zID0gZmlsZTFfM1sxOm5yb3coZmlsZTFfMyksMTo4XQ0KZGF5NiA9IGZpbGU2WzI6bnJvdyhmaWxlNiksMToxMF0NCg0KIyBjb2xuYW1lcyhkYXkxXzMpIDwtIHVubGlzdChmaWxlMV8zWzEsMToxMF0pDQojIyBjb2xuYW1lcyhkYXkxXzMpIDwtIHVubGlzdChmaWxlMV8zWzEsMTo4XSkNCmNvbG5hbWVzKGRheTYpIDwtIHVubGlzdChmaWxlNlsxLDE6MTBdKQ0KDQojIGRheTFfM1ssMjo3XSA9IHNhcHBseShkYXkxXzNbLDI6N10sIGZ1bmN0aW9uKHgpIGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKHgpKSkNCmRheTFfM1ssNDo3XSA9IHNhcHBseShkYXkxXzNbLDQ6N10sIGZ1bmN0aW9uKHgpIGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKHgpKSkNCmRheTZbLDI6N10gPSBzYXBwbHkoZGF5NlssMjo3XSwgZnVuY3Rpb24oeCkgYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoeCkpKQ0KDQpsZXZlbHMoZGF5MV8zJHJlZ3VsYXRvcikgPSBjKGxldmVscyhkYXkxXzMkcmVndWxhdG9yKSwgIlVua25vd24iKQ0KZGF5MV8zJHJlZ3VsYXRvcltpcy5uYShkYXkxXzMkcmVndWxhdG9yKV0gPSAiVW5rbm93biINCmBgYA0KDQpgYGB7cn0NCmRheTFfMw0KYGBgDQoNCg0KDQpgYGB7cn0NCnBsb3RkYXRhID0gZGF5MV8zWzE6NDAsXSAjIGRvIGdyYXBoIGFsc28gZm9yIDUwIA0KcGxvdGRhdGEgPSBkcm9wbGV2ZWxzKHBsb3RkYXRhKQ0KcGxvdGRhdGEkZ2VuZSA9IGZhY3RvcihwbG90ZGF0YSRnZW5lLCBsZXZlbHMgPSAgYyhhcy5jaGFyYWN0ZXIocGxvdGRhdGEkZ2VuZSkpKQ0KcGxvdGRhdGEkQWJzUENBX3ZhcmlhbmNlID0gYWJzKHBsb3RkYXRhJFBDQV92YXJpYW5jZSkNCnBsb3RkYXRhDQpwbG90MSA9IHBsb3RfbHkoIGRhdGEgPSBwbG90ZGF0YQ0KICAgICAgICAseCA9IH5nZW5lDQogICAgICAgICx5ID0gYWJzKHBsb3RkYXRhJFBDQV92YXJpYW5jZSkNCiAgICAgICAgLGNvbG9yID0gfnJlZ3VsYXRvcg0KICAgICAgICAsdHlwZSA9ICdiYXInDQopDQpwbG90MSA9IGxheW91dChwbG90MQ0KICAgICAgICxsZWdlbmQgPSBsaXN0KHRpdGxlID0gIlJlZ3VsYXRvciIsIHkgPSAxLCB4ID0gMC45KQ0KICAgICAgICx5YXhpcyA9IGxpc3QocmFuZ2UgPSBjKG1pbihhYnMocGxvdGRhdGEkUENBX3ZhcmlhbmNlKSkqMC45OTksIG1heChhYnMocGxvdGRhdGEkUENBX3ZhcmlhbmNlKSkqMS4wMDEpLCB0aXRsZSA9ICJBYnNvbHV0ZSBQQ0EgdmFyaWFuY2UiKQ0KICAgICAgICx3aWR0aCA9IDEwMDANCiAgICAgICAsbWFyZ2luID0gbGlzdChiPS0yMCkNCiAgICAgICApDQpwbG90MQ0KIyBwbG90bHlfSU1BR0UocGxvdDEsIGZvcm1hdCA9ICJwbmciLCBvdXRfZmlsZSA9ICI0MC5wbmciKQ0KIyBwbG90KGFicyhwbG90ZGF0YSRQQ0FfdmFyaWFuY2UpKQ0KYGBgDQoNCmBgYHtyLCBmaWcud2lkdGg9MTAsZmlnLmhlaWdodD0xMX0NCnBsb3QxID0gZ2dwbG90KGRhdGEgPSBwbG90ZGF0YSwgYWVzKHggPSBnZW5lLCB5ID0gQWJzUENBX3ZhcmlhbmNlLCBjb2xvciA9IHJlZ3VsYXRvciwgbGFiZWwgPSByZWd1bGF0b3IpKSArIA0KICBnZW9tX3BvaW50KHNpemUgPSAxMCkgKw0KICBnZW9tX3NlZ21lbnQoYWVzKHggPSBnZW5lLCB4ZW5kID0gZ2VuZSwgDQogICAgICAgICAgICAgICAgICAgeSA9IDAuMDIyNiwgeWVuZCA9IEFic1BDQV92YXJpYW5jZSwgDQogICAgICAgICAgICAgICAgICAgY29sb3IgPSByZWd1bGF0b3IpLCBzaXplID0gMiwgYWxwaGEgPSAwLjUpICsgDQogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAuMDIyNiwgMC4wMjI4OCkpICsNCiAgZ2VvbV90ZXh0KGNvbG9yID0gJ3doaXRlJywgc2l6ZSA9IDMpICsgDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpICsgDQogIGNvb3JkX2ZsaXAoKSArDQogIGxhYnMoeSA9ICJBYnNvbHV0ZSBQQ0EgVmFyaWFuY2UiLCB4ID0gIkdlbmVzIiwgY29sb3IgPSAiUmVndWxhdG9yIiwgZmFtaWx5ID0gJ1RUIFRpbWVzIE5ldyBSb21hbicpICANCiAgIyBzY2FsZV9jb2xvdXJfYnJld2VyKHBhbGV0dGUgPSAnUGFpcmVkJykNCiAgIyBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiI0NDNjY2NiIsICIjOTk5OUNDIiwgIiM2NkNDOTkiKSkNCnBsb3QxDQpnZ3NhdmUoIjQwLnBkZiIsIGRldmljZSA9ICJwZGYiLCBwbG90ID0gcGxvdDEsICkNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkoZXh0cmFmb250KQ0KZm9udF9pbXBvcnQoKQ0KbG9hZGZvbnRzKGRldmljZSA9ICJ3aW4iKQ0KYGBgDQoNCmBgYHtyfQ0KbGlicmFyeShnZ2FsdCkNCnBsb3QyID0gZ2dwbG90KGRhdGEgPSBwbG90ZGF0YSwgYWVzKHggPSBwbG90ZGF0YSRnZW5lLCB5ID0gcGxvdGRhdGEkQWJzUENBX3ZhcmlhbmNlLCBjb2xvciA9IHBsb3RkYXRhJHJlZ3VsYXRvciwgbGFiZWwgPSBwbG90ZGF0YSRyZWd1bGF0b3IpKSArIA0KICBnZW9tX2xvbGxpcG9wKHNpemUgPSA1KSArIA0KICAjIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAuMDIyNywgMC4wMjI4OCkpICsNCiAgdGhlbWVfbWluaW1hbCgpDQpwbG90Mg0KDQpgYGANCg0KDQpgYGB7cn0NCiMgSWxhbmEgYXNrIGZvciB0YWJsZSBsaWtlIHRoYXQNCndyaXRlLmNzdihkYXkxXzNbMTo1MCxjKDEsMTAsMiw0LDUsNildLCBmaWxlID0gIkRhdGEgZnJvbSBUc3ZpeWEgYWJvdXQgZ2VuZXMgdmFyaWFuY2UuY3N2IikNCmBgYA0KSWxhbmEgbWFudWFsbHkgY3VycmF0ZWQgc29tZSAidW5rbm93biIiIHJlZ3VsYXRvcnMgYW5kIGZpbmQgbWF0Y2hpbmcgcmVndWxhdG9ycyBmb3IgdG9wIDUwIGhpdHMuDQoNCmBgYHtyfQ0KYWRkaXRpb25hbCA9IHJlYWQueGxzeCgiZGF0YS9nZW5lc193aXRoX2hpZ2hlc3RWYXJpYW5jZV9KdWx5MTggK21hbnVhbGx5X2N1cnJhdGVkLnhsc3giLDEpDQpsZXZlbHMoYWRkaXRpb25hbCRyZWd1bGF0b3IpID0gYyhsZXZlbHMoYWRkaXRpb25hbCRyZWd1bGF0b3IpLCBsZXZlbHMoYWRkaXRpb25hbCRtYW51YWxseS5yZWd1bGF0b3IpKQ0KYWRkaXRpb25hbCRyZWd1bGF0b3JbIWlzLm5hKGFkZGl0aW9uYWwkbWFudWFsbHkucmVndWxhdG9yKV0gPSBhZGRpdGlvbmFsJG1hbnVhbGx5LnJlZ3VsYXRvclshaXMubmEoYWRkaXRpb25hbCRtYW51YWxseS5yZWd1bGF0b3IpXQ0KDQpwbG90ZGF0YSA9IGFkZGl0aW9uYWxbMTo1MCxdICMgZG8gZ3JhcGggYWxzbyBmb3IgNTAgDQpwbG90ZGF0YSA9IGRyb3BsZXZlbHMocGxvdGRhdGEpDQpwbG90ZGF0YSRnZW5lID0gZmFjdG9yKHBsb3RkYXRhJGdlbmUsIGxldmVscyA9ICBjKGFzLmNoYXJhY3RlcihwbG90ZGF0YSRnZW5lKSkpDQpwbG90ZGF0YSRBYnNQQ0FfdmFyaWFuY2UgPSBhYnMocGxvdGRhdGEkUENBX3ZhcmlhbmNlKQ0KcGxvdGRhdGENCnBsb3QyID0gcGxvdF9seSggZGF0YSA9IHBsb3RkYXRhDQogICAgICAgICx4ID0gfmdlbmUNCiAgICAgICAgLHkgPSBhYnMocGxvdGRhdGEkUENBX3ZhcmlhbmNlKQ0KICAgICAgICAsY29sb3IgPSB+cmVndWxhdG9yDQogICAgICAgICx0eXBlID0gJ2JhcicNCiAgICAgICAgLHdpZHRoID0gMTIwMA0KKQ0KcGxvdDIgPSBsYXlvdXQocGxvdDINCiAgICAgICAsbGVnZW5kID0gbGlzdCh0aXRsZSA9ICJSZWd1bGF0b3IiKQ0KICAgICAgICx5YXhpcyA9IGxpc3QocmFuZ2UgPSBjKG1pbihhYnMocGxvdGRhdGEkUENBX3ZhcmlhbmNlKSkqMC45OTksIG1heChhYnMocGxvdGRhdGEkUENBX3ZhcmlhbmNlKSkqMS4wMDEpKQ0KICAgICAgICx4YXhpcyA9IGxpc3QobGFiZWxzID0gIm91dHNpZGUiLCB0aWNrZm9udD1saXN0KHNpemUgPSAxNiksIGF1dG9tYXJnaW4gPSBULCBzaG93bGluZSA9IEYsIHplcm9saW5lID0gVCkNCikNCnBsb3QyDQoNCmBgYA0KDQpTb3VyY2UgY29kZSBhdmFpbGFibGUgW2hlcmVdKGh0dHBzOi8vYml0YnVja2V0Lm9yZy9iZW56enovaXJpcy1jYWxjaWZpY2F0aW9uL3NyYy9tYXN0ZXIvbmV3ZnJvbXRzdml5YS5SbWQpLg==