「R shiny 基礎(chǔ)」如何進(jìn)行網(wǎng)頁布局

在第一篇「R shiny 基礎(chǔ)」初識(shí)Shiny 灶泵,我們了解了Shiny應(yīng)用主要分為兩個(gè)部分确虱,UI對(duì)象和server函數(shù)施蜜,這一篇將會(huì)介紹如何進(jìn)行網(wǎng)頁布局曲初。

準(zhǔn)備

在開始之前体谒,你需要?jiǎng)?chuàng)建一個(gè)文件夾,其中有一個(gè)app.R文件臼婆,復(fù)制如下的內(nèi)容到app.R

library(shiny)
# 定義UI
ui <- fluidPage(
)
# 定義服務(wù)端
server <- function(input, output){
}

# 運(yùn)行app
shinyApp(ui = ui, server = server)

基本布局(Layout)

當(dāng)你打開任何一個(gè)網(wǎng)頁抒痒,每個(gè)網(wǎng)頁的不同元素的擺放方式就是布局,例如我的簡(jiǎn)書主頁

網(wǎng)頁布局

我們的目標(biāo)是快速的構(gòu)建一個(gè)湊合用的網(wǎng)頁應(yīng)用颁褂,而如果從頭搭建故响,那么你需要學(xué)一堆HTML語法和CSS樣式,基本上就把我們勸退了颁独。好在Shiny提供了一系列高級(jí)函數(shù)彩届,讓我們“暫時(shí)”不用考慮底層的HTML和CSS。

HTML元素描述的是內(nèi)容是什么誓酒,CSS用于描述內(nèi)容應(yīng)該怎么樣樟蠕。

先學(xué)初學(xué)者必須掌握的布局三板斧,fluidPage, titlePanelsidebarLayout,

  • fluidPage: 它的作用和其命名一致靠柑,就是創(chuàng)建一個(gè)流動(dòng)布局的頁面寨辩。
  • titlePanel: 標(biāo)題欄
  • sidebarLayout: 常用的邊欄布局,接受如下兩個(gè)函數(shù)作為輸入
    • sidebarPanel: 邊欄
    • mainPanel: 主體部分
ui <- fluidPage(
  titlePanel("title Panel"),
  sidebarLayout(
    sidebarPanel("sidebar"),
    mainPanel("main panler")
     
  )
 

效果如下:

布局三板斧

titlePanelsidebarLaytou創(chuàng)建了我們Shiny應(yīng)用的基本布局病往,對(duì)于我們初學(xué)者基本就夠用了捣染。在我們有一定基礎(chǔ)后,我們可以嘗試用fluidRowColumn手動(dòng)搭建布局停巷。

雖然結(jié)果不是特別好看耍攘,但請(qǐng)牢記當(dāng)我們學(xué)習(xí)一個(gè)新事物的時(shí)候,不要想著完美畔勤,而是追求完成蕾各。只有完成了,你才能有資格談完美庆揪。

HTML內(nèi)容

在搭建好基本布局的前提下式曲,我們可以在*Panel函數(shù)中填充更多內(nèi)容。比方說缸榛,出現(xiàn)在siderbarPanel中的"siderbar"吝羞,就是我們加入的文字內(nèi)容。

從最終的HTML角度來看内颗,sidebarLayout中是將網(wǎng)頁分隔成4:8的兩個(gè)部分钧排,sidebarPanel是4, mainPanel是8。 且sidebarPanel輸入的內(nèi)容是都在HTML的 form 層級(jí)下

HTML源代碼

為了增加更多高級(jí)的內(nèi)容均澳,我們可以Shiny的HTML 標(biāo)簽函數(shù)(tag)恨溜,等價(jià)于HTML5的標(biāo)簽(tag)符衔。

shiny 函數(shù) 等價(jià)的HTML5 標(biāo)簽 結(jié)果
p <p> 段落
h1 <h1> 第一級(jí)標(biāo)題
h2 <h2> 第二級(jí)標(biāo)題
h3 <h3> 第三級(jí)標(biāo)題
h4 <h4> 第四級(jí)標(biāo)題
h5 <h5> 第五級(jí)標(biāo)題r
h6 <h6> 第六級(jí)標(biāo)題
a <a> 超鏈接
br
空白行
div <div> 分隔文本
span <span> 行內(nèi)分割
pre <pre> 等寬文本
code <code> 代碼
img <img> 圖片
strong <strong> 加粗
em <em> 強(qiáng)調(diào)
HTML 原生HTML代碼

寫個(gè)代碼練習(xí)下

ui <- fluidPage(
  titlePanel("title Panel"),
  sidebarLayout(
    sidebarPanel(
      tags$hgroup(h1("Side Bar"), h2("Panel"))
      
    ),
    mainPanel(
      HTML("<p>You can add content to your Shiny app by placing it inside a <code>*Panel</code> function. For example, the apps above display a character string in each of their panels. The words “sidebar panel” appear in the sidebar panel, because we added the string to the <code>sidebarPanel</code> function, e.g. <code>sidebarPanel(\"sidebar panel\")</code>. The same is true for the text in the title panel and the main panel.</p>"),
      div()
    )
  )
)
預(yù)覽頁面
對(duì)應(yīng)的HTML

格式化樣式

上面只用了HTML的元素,如果我們希望標(biāo)題能夠居中糟袁,改變字體和顏色判族,那么就需要對(duì)HTML中元素的屬性進(jìn)行修改。


ui <- fluidPage(
  titlePanel("title Panel"),
  sidebarLayout(
    sidebarPanel(
      h1("Side Bar Panel")
      
    ),
    mainPanel(
      h1("First Header", align="center",
        style ="font-family: 'times'; font-size: 32pt "),
      h2("Second Header", align="center",
         stype = "font-family: 'arial'; font-size: 14pt"),
      div(),
      p("I fill blue", style = "color:blue")
    )
  )
)
網(wǎng)頁效果
對(duì)應(yīng)的HTML

關(guān)于元素的屬性项戴,可以在w3schools學(xué)習(xí)

圖片和超鏈接

除了簡(jiǎn)單的文本以外形帮,我們還可以在網(wǎng)頁中增加圖片,為文本增加超鏈接肯尺。圖片的內(nèi)容要放和app.R同一級(jí)的www文件夾下

ui <- fluidPage(
  titlePanel("title Panel"),
  sidebarLayout(
    sidebarPanel(
      h1("Side Bar Panel")
      
    ),
    mainPanel(
      h1("Hello Shiny", align="center",
        style ="font-family: 'times'; font-size: 32pt "),
      div(),
      p("This images was download from", a(href="http://www.reibang.com/p/e2495bbc7bd1", "here" )),
      img(src = "2013053-4dd190b5c709b535.png")
    )
  )
效果如下

Shiny支持的Tags在如下兩個(gè)鏈接中有介紹

小練習(xí)

請(qǐng)還原出如下的網(wǎng)頁布局

小練習(xí)

其中Rstuio的圖片下載地址為http://shiny.rstudio.com/tutorial/written-tutorial/lesson2/www/rstudio.png

復(fù)習(xí)

經(jīng)過這一篇的學(xué)習(xí)沃缘,我們現(xiàn)在能完成如下內(nèi)容

  • 使用fluidPage,titlePanelsidebarLayout創(chuàng)建用戶界面
  • 使用Shiny的tag函數(shù)構(gòu)建HTML元素
  • 為每個(gè)tag函數(shù)設(shè)置HTML屬性
  • 通過往 titlePanel, sidebarPanelmainPanel傳入元素填充網(wǎng)頁
  • 在子布局中使用,分隔多個(gè)元素
  • 增加www文件夾下的圖片

到目前為止,我們只使用了HTML的基本元素構(gòu)建用戶界面则吟,下一節(jié)將會(huì)學(xué)習(xí)在網(wǎng)頁中增加一些小工具槐臀,例如下拉欄。

參考

傳送門

Shiny基礎(chǔ)教程:

最后編輯于
?著作權(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)離奇詭異啥箭,居然都是意外死亡谍珊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門急侥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來砌滞,“玉大人,你說我怎么就攤上這事坏怪”慈螅” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵铝宵,是天一觀的道長(zhǎng)打掘。 經(jīng)常有香客問我,道長(zhǎng)鹏秋,這世上最難降的妖魔是什么尊蚁? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮侣夷,結(jié)果婚禮上横朋,老公的妹妹穿的比我還像新娘。我一直安慰自己惜纸,他們只是感情好叶撒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著耐版,像睡著了一般祠够。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上粪牲,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天古瓤,我揣著相機(jī)與錄音,去河邊找鬼腺阳。 笑死落君,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的亭引。 我是一名探鬼主播绎速,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼焙蚓!你這毒婦竟也來了纹冤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤购公,失蹤者是張志新(化名)和其女友劉穎萌京,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(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
  • 文/蒙蒙 一薛躬、第九天 我趴在偏房一處隱蔽的房頂上張望俯渤。 院中可真熱鬧,春花似錦型宝、人聲如沸八匠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽梨树。三九已至坑夯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抡四,已是汗流浹背柜蜈。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(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)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案阔涉? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,748評(píng)論 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5缆娃? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 27,474評(píng)論 1 45
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫瑰排、插件贯要、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,093評(píng)論 4 62
  • 多愁善感的時(shí)候總是想寫點(diǎn)東西,總覺得只有孤獨(dú)才可以成就人椭住,一個(gè)人的時(shí)候也可以撐起一切崇渗。本就是個(gè)三分鐘熱度的人,望能堅(jiān)持京郑。
    芭蕉葉落閱讀 170評(píng)論 0 0
  • 我害怕啊 怕失去你啊宅广。 拜托了 冬天快走開 春天快來啊。
    _難自渡閱讀 94評(píng)論 0 0