自拆機(jī)械表始

寫(xiě)在前面

春節(jié)期間跟家里人聊天的時(shí)候茅诱,再一次提到了小時(shí)候的時(shí)候拆家里手表的事为流。然后又是對(duì)我一陣數(shù)落。孩童時(shí)的我對(duì)這個(gè)結(jié)構(gòu)復(fù)雜让簿、設(shè)計(jì)精巧的玩意充滿(mǎn)了好奇,總是想要機(jī)會(huì)拆開(kāi)看看里面到底裝著什么秀睛。父母知道我的心思自然不敢把手表輕易放在外頭尔当。但機(jī)會(huì)這東西,等一等總會(huì)有的蹂安。終于還是被我逮到了機(jī)會(huì)椭迎。拆開(kāi)容易,拼回去就難了田盈。結(jié)局免不了一頓暴揍畜号,然后被父母記到現(xiàn)在......手表某種程度上代表了人類(lèi)制造工具的某種極致,而拆手表嘛則是小孩子極致的好奇心了允瞧。至于挨揍嘛简软,純屬活該了......扯遠(yuǎn)了。

一個(gè)畫(huà)柱狀圖的插件

本來(lái)我是準(zhǔn)備當(dāng)一個(gè)安靜的鴿子述暂,等陳博士把rserver插件完善了(起碼寫(xiě)一個(gè)可用的交互界面吧)痹升。但,架不住博士小姐姐shawn有特別的姿勢(shì)畦韭。一頓騷操作就把shiny包搞定了疼蛾,加上陳博士寫(xiě)個(gè)網(wǎng)頁(yè)彈出功能,shiny的最后一塊拼圖算是齊了艺配。工頭喊一嗓子察郁,開(kāi)工了......這次的插件主要功能是畫(huà)柱狀圖......柱狀圖算是科研作圖的基礎(chǔ),任何一個(gè)雜志隨便翻翻都能看到柱狀圖转唉。之前也寫(xiě)過(guò)幾篇關(guān)于柱狀圖的文章檢驗(yàn)自己對(duì)R語(yǔ)言的學(xué)習(xí)程度皮钠。新的一年了,正好是時(shí)候檢驗(yàn)一下對(duì)r和ggplot2的認(rèn)識(shí)又到了什么水準(zhǔn)了酝掩。這次鳞芙,我們用shiny折騰了一個(gè)柱狀圖。我才不會(huì)說(shuō)是因?yàn)锽arplot這個(gè)名字看著就會(huì)排在前面呢期虾。如果那樣子原朝,我肯定會(huì)改名叫A barplot了,你細(xì)品镶苞,你仔細(xì)品喳坠。總之這次的插件主要能畫(huà)三種圖茂蚓,分別是帶星號(hào)標(biāo)記的壕鹉,帶字母標(biāo)記的分組柱狀圖和堆積柱狀圖剃幌。

下載地址點(diǎn)這里:Barplot_shiny

PS:輸入文件參考鳶尾花數(shù)據(jù)集。如果你還不清楚晾浴,直接去rstudio里輸入iris就能看到了负乡。大概類(lèi)似下面的結(jié)構(gòu)。

Group Factor_1 Factor_2 ... Factor_n
Name_1 value value ... value
Name_1 value value ... value
... ... ... ... ...
Name_2 value value ... value
Name_2 value value ... value
Name_2 value value ... value

界面

image.png

先從最左邊的菜單開(kāi)始做起脊凰。

image.png

左邊側(cè)邊欄第一個(gè)是輸入數(shù)據(jù)的地方抖棘,默認(rèn)CSV文件(既默認(rèn)數(shù)據(jù)以半角逗號(hào)分隔)。然后選擇數(shù)據(jù)是否已經(jīng)整理為透視表狸涌,這個(gè)選項(xiàng)不常用切省。一般默認(rèn)第一列是分組名,如果不是帕胆,第三個(gè)選項(xiàng)可以換一下朝捆。已經(jīng)設(shè)定好會(huì)讀取輸入的文件的列名并自動(dòng)更新到下拉菜單里。

此外懒豹,因?yàn)闆](méi)有改默認(rèn)設(shè)置芙盘,數(shù)據(jù)文件默認(rèn)不超過(guò)5 M。

然后就是選擇是分組柱狀圖或者是堆積圖歼捐,需要星號(hào)標(biāo)記或者是星號(hào)標(biāo)記何陆。這里未來(lái)會(huì)給更多的選項(xiàng)讓你選擇到底用t檢驗(yàn),ANOVA豹储,還是非參數(shù)檢驗(yàn)贷盲。此外標(biāo)記默認(rèn)數(shù)據(jù)服從正態(tài)分布并且滿(mǎn)足方差齊性。未來(lái)可能把對(duì)應(yīng)的檢驗(yàn)也加進(jìn)去(感覺(jué)又在給自己挖坑了)剥扣。另外字母標(biāo)記對(duì)所有的可能性還是沒(méi)做到遍歷巩剖,這部分未來(lái)還需要改進(jìn),希望得到用戶(hù)的反饋钠怯。

# t檢驗(yàn)

stat.test <- dta_barplot %>%

  group_by(key) %>%

  t_test(value ~ group) #遇事不決t檢驗(yàn)

stat.test <- stat.test %>%

  adjust_pvalue(method = "bonferroni") %>%

  add_significance("p.adj")

# 兩因素ANOVA(如果需要請(qǐng)自行魔改)

anova <-

  aov(value ~ group + key, dta_barplot) #ANOVA

posthoc.test <-

  LSD.test(anova, c('group', 'key'), p.adj = 'bonferroni')

posthoc <-

  posthoc.test$groups %>%

  mutate(name = row.names(.)) %>%

  separate(name, into = c("group", "key"), sep = ":")

# 單因素ANOVA

key_name <- dta_barplot %>% distinct(key) %>% .$key

posthoc <- data.frame(

  value = double(),

  groups = character(),

  key = character(),

  group = character(),

  stringsAsFactors = FALSE

)

for (i in 1:length(key_name)) {

  anova <- dta_barplot %>%

    filter(key == key_name[i]) %>%

    aov(value ~ group, .)

  posthoc.test <- anova %>%

    LSD.test(., "group", p.adj = 'bonferroni')

  posthoc <- posthoc.test$groups %>%

    mutate(key = key_name[i],

          group = rownames(.)) %>%

    bind_rows(., posthoc)

}

第三個(gè)菜單是設(shè)置顏色和主題佳魔,這里集成了ggpubr,ggprism和ggthemes的部分主題晦炊,如果你有更好的鞠鲜,不妨自己加到代碼里。

#set theme

switch(

  input$slider_theme,

  theme_set(theme_few()),

  theme_set(theme_bw()),

  theme_set(theme_classic()),

  theme_set(theme_pubclean()),

  theme_set(theme_pubr()),

  theme_set(theme_minimal()),

  theme_set(theme_prism())

)

#set palette

mypal <- switch(

  input$slider_palette,

  pal_npg()(9),

  pal_jco()(9),

  pal_lancet()(9),

  pal_locuszoom()(9),

  prism_fill_pal(palette = "prism_light")(9),

  prism_fill_pal(palette = "floral")(12),

  prism_fill_pal(palette = "prism_dark")(10),

  prism_fill_pal(palette = "viridis")(6),

  prism_fill_pal(palette = "warm_and_sunny")(10),

  prism_fill_pal(palette = "black_and_white")(9)

)

接著是柱子的設(shè)定断国,分別是柱子寬度贤姆,間隔(不一定可設(shè)置),這里設(shè)定誤差線(xiàn)的寬度是柱寬度的1/3稳衬,如果覺(jué)得丑霞捡,請(qǐng)用意志力挺過(guò)去。Y軸最小值薄疚,這個(gè)也是準(zhǔn)備取消的東西碧信,因?yàn)樽兞藭?huì)造成差別很大的錯(cuò)覺(jué)赊琳,想不從0點(diǎn)開(kāi)始請(qǐng)選擇箱線(xiàn)圖。然后是柱形邊框顏色和顏色填充的類(lèi)別砰碴。顏色填充這塊也沒(méi)有覆蓋到所有情況躏筏,所以,在改了在改了......

image.png

分面的選項(xiàng)呈枉,嗯寸士。

其實(shí)星號(hào)標(biāo)記的柱狀圖沒(méi)有設(shè)定不分面,如果選否起始是設(shè)定為行數(shù)為1碴卧,固定y軸的分面圖,本人發(fā)際線(xiàn)實(shí)在不夠用了乃正。

另外三個(gè)是facet里比較有意思的選項(xiàng)住册,自行體會(huì)吧。

最后就是X瓮具,Y軸標(biāo)題和標(biāo)簽的標(biāo)題(這個(gè)ggprism填了也不出東西荧飞,神秘,可能有更具體的修改選項(xiàng)吧)名党。這塊沒(méi)有寫(xiě)expression函數(shù)叹阔,估計(jì)是不支持特殊的字符和上下角標(biāo)了......然后就是圖的尺寸,整個(gè)圖(除了字母和星號(hào)標(biāo)記)的字號(hào)传睹,字母和星號(hào)標(biāo)記的尺寸耳幢,標(biāo)簽的位置(起始還可以有個(gè)坐標(biāo)選項(xiàng)的,下次加上吧)和最后的x軸標(biāo)簽角度欧啤。

大概就介紹這么多吧睛藻,想要做的選項(xiàng)還有很多。例如:Y軸的tick邢隧,Y軸是否使用log_scale以及上面提到的......TBtools的界面方面店印,畢竟有shiny了,就這么簡(jiǎn)化著吧......

最后

當(dāng)初學(xué)習(xí)R的動(dòng)力就是想畫(huà)個(gè)柱狀圖倒慧,學(xué)會(huì)后才發(fā)現(xiàn)如果學(xué)R只是為了畫(huà)圖那就買(mǎi)櫝還珠了按摘。R語(yǔ)言提供了從數(shù)據(jù)載入、清洗到統(tǒng)計(jì)分析再到作圖的全套流程纫谅。特別是dplyr提供的整套類(lèi)似thinking flow的數(shù)據(jù)處理流程和purrr簡(jiǎn)化的匿名函數(shù)炫贤,分析數(shù)據(jù)的整個(gè)流程如水流般水到渠成。如果這個(gè)小程序能夠激發(fā)起你學(xué)習(xí)R的興趣系宜,如果你好奇R到底是怎么把數(shù)據(jù)變成圖表的照激,索性就拆開(kāi)這個(gè)包,看看里面的函數(shù)都是做什么的盹牧,最后嘗試自己用R處理數(shù)據(jù)吧俩垃。希望拆開(kāi)這個(gè)小插件后能在里面發(fā)現(xiàn)自己的好奇心励幼。還能孩子多久......

PS:今天用別的電腦打開(kāi)才發(fā)現(xiàn),插件里的中文注釋都是亂碼......我有一句mmp不知當(dāng)講不當(dāng)講

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末口柳,一起剝皮案震驚了整個(gè)濱河市苹粟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌跃闹,老刑警劉巖嵌削,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異望艺,居然都是意外死亡苛秕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)找默,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)艇劫,“玉大人,你說(shuō)我怎么就攤上這事惩激〉晟罚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵风钻,是天一觀的道長(zhǎng)顷蟀。 經(jīng)常有香客問(wèn)我,道長(zhǎng)骡技,這世上最難降的妖魔是什么鸣个? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮布朦,結(jié)果婚禮上毛萌,老公的妹妹穿的比我還像新娘。我一直安慰自己喝滞,他們只是感情好阁将,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著右遭,像睡著了一般做盅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窘哈,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天吹榴,我揣著相機(jī)與錄音,去河邊找鬼滚婉。 笑死图筹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播远剩,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼扣溺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了瓜晤?” 一聲冷哼從身側(cè)響起锥余,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎痢掠,沒(méi)想到半個(gè)月后驱犹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡足画,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年雄驹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淹辞。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡荠医,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出桑涎,到底是詐尸還是另有隱情,我是刑警寧澤兼贡,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布攻冷,位于F島的核電站,受9級(jí)特大地震影響遍希,放射性物質(zhì)發(fā)生泄漏等曼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一凿蒜、第九天 我趴在偏房一處隱蔽的房頂上張望禁谦。 院中可真熱鬧,春花似錦废封、人聲如沸州泊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)遥皂。三九已至,卻和暖如春刽漂,著一層夾襖步出監(jiān)牢的瞬間演训,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工贝咙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留样悟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像窟她,于是被迫代替她去往敵國(guó)和親陈症。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容