作者linda841004 (水凝结)
看板R_Language
标题[问题] shiny 图表标签格式、图表位置
时间Mon Jan 22 16:23:49 2024
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)s
[软体熟悉度]:
入门(写过其他程式,只是对语法不熟悉)s
[问题叙述]:
为了解决一个问题,衍生了更多问题的我....
问题1:如何将图表的y轴座标、资料标签改以百分比呈现?
问题2:如何将图表置中?
尝试column(12,align=center,无反应
问题3:土法炼钢(*100再黏一个%)将表格资料改成百分比,但因为是文字格式所以靠左,阅读不易,可以改成靠右吗?或是有其他方式直接改成百分比格式呢?
问题4:原始资料无法直接作图吗?(目前是依据age拆档+一个age分组栏位,最後垂直合并)
还请各路好手帮帮忙
shiny结果档
http://i.imgur.com/8iYEMNO.jpg
-----------------------
原始资料
http://i.imgur.com/dLWAVAW.jpg
-----------------------
依原始资料修改的作图资料档(截部分)
http://i.imgur.com/ooEHG5x.jpg
![](https://cache.ptt.cc/c/https/i.imgur.com/ooEHG5xl.jpg?e=1719557281&s=qbqvtsycH4NvvFZq9Y6Urg)
-----------------------
[程式范例]:
s
library(shiny)
library(stringr)
library(highcharter)
library(dplyr)
aa <- data.frame(
year=c(2005,2006,2007,2008,2009,2010),
age_18=c(0.951,0.804,0.758,0.68,0.60,0.582),
age19_49=c(0.964,0.852,0.705,0.71,0.677,0.611),
age50_74=c(0.900,0.796,0.69,0.615,0.515,0.58),
age75_=c(0.652,0.67,0.60,0.453,0.453,0.403))
#资料要做图必须改呈现方式
age = c("age_18")
aa_1 <- subset(aa,select=c(year,age_18)) %>%
rename(pt=age_18)
aa_1$age <- age
age = c("age19_49")
aa_2 <- subset(aa,select=c(year,age19_49)) %>%
rename(pt=age19_49)
aa_2$age <- age
age = c("age50_74")
aa_3 <- subset(aa,select=c(year,age50_74)) %>%
rename(pt=age50_74)
aa_3$age <- age
age = c("age75_")
aa_4 <- subset(aa,select=c(year,age75_)) %>%
rename(pt=age75_)
aa_4$age <- age
#rbind:rbind(data1,data2)列合并
aa_all <-rbind(rbind(rbind(aa_1,aa_2),aa_3),aa_4)
aa$age_18 <- str_c(aa$age_18*100,"%")
aa$age19_49 <- str_c(aa$age19_49*100,"%")
aa$age50_74 <- str_c(aa$age50_74*100,"%")
aa$age75_ <- str_c(aa$age75_*100,"%")
#资料表格呈现时用原始资料(aa),但作图用重新制作的资料(aa_all)
#做图只会呈现0.xx,没有呈现百分比(用str_c改成百分比格式却无法作图)
ui <- fluidPage(
fluidRow(
column(12,
DT::dataTableOutput("aa_table")),
column(8,
highchartOutput("aa_chart")))
)
server <- function(input,output){
output$aa_table <- DT::renderDataTable(
aa,options = list(ordering = FALSE,searching = FALSE))
output$aa_chart <-renderHighchart({
aa_all %>%
hchart('line', hcaes(x = year, y = pt, group=age)) %>%
hc_title(text = "各年龄占率(%)")
})
}
shinyApp(ui = ui, server = server)
[环境叙述]:
R Studio
[关键字]:
格式、百分比、位置
-----
Sent from JPTT on my Google Pixel 8.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.224.140.146 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1705911831.A.79E.html
1F:推 locka: 你用的套件是highcharter,所以R原本的column(align...)函 01/22 17:48
2F:推 locka: 式跟参数在这里不适用。这是一种使用网页技术制作的互动式 01/22 17:48
3F:推 locka: 图表套件,有js跟html基础的话,翻highcharter官方文件可以 01/22 17:48
4F:推 locka: 找到客制化说明。一般如果没有互动需求,单纯静态作图的话 01/22 17:48
5F:推 locka: 可以考虑使用ggplot2套件~~ 01/22 17:48
6F:→ linda841004: 了解,需要使用到互动式图表,会再去研究研究!谢谢 01/23 09:27
7F:→ linda841004: ! 01/23 09:27
8F:推 Autumn06513: 针对百分比格式 我都直接用formattable这个package 02/09 11:07
9F:→ Autumn06513: 去转 很方便xD 02/09 11:07