library("shiny")
library("ggplot2")
library("DT")
library("reshape2")
## load data ##
aqi = read.csv(file = "C:/Users/stan/Desktop/AIR/month.csv",
header = T, sep = ",")
str(aqi)
colnames(aqi) = c("num","month",
"PM10","PM2.5","NO","NO2")
## ui.R ##
ui = fluidPage(
titlePanel('AIR'),
sidebarLayout(
sidebarPanel(
selectInput('month',
'Choose a month:',
c('All', unique(as.character(aqi$month)
))),
selectInput('PM10',
'Number of :PM10',
c('All', unique(as.character(aqi$PM10)
))),
selectInput('PM2.5',
'Number of PM2.5:',
c('All',unique(as.character(aqi$PM2.5)
))),
selectizeInput("AIR",
"Select Contaminant:",
choices = c( "PM2.5",
"PM10"),
selected = "PM2..5",
multiple = TRUE )
),
mainPanel(
dataTableOutput('table'),
plotOutput("plot")
)
)
)
## server.R ##
server = function(input, output) {
# Filter data based on selections
output$table <- DT::renderDataTable(DT::datatable({
data <- aqi
if (input$month != "All") {
data <- data[aqi$month == input$month,]
}
if (input$PM10 != "All") {
data <- data[aqi$PM10 == input$PM10,]
}
data
if (input$PM2.5 != "All") {
data <- data[aqi$PM2.5 == input$PM2.5,]
}
data
}))
output$plot = renderPlot({
plot.data <- melt(aqi, id.vars= "month")
#not sure if input$cnt is a list or a vector
#may need to manipulate that before passing
plot.data <- plot.data[plot.data$variable %in% input$AIR, ]
ggplot(plot.data) +
geom_line(mapping = aes(x = month, y = value , colour =variable)) +
labs (x = "month", y = "value", title = "AIR") +
scale_colour_discrete(name = "AIR")
})
}
shinyApp(ui, server)
geom_path:每个组仅包含一个观察值。您是否需要调整小组审美? geom_path:每个组仅包含一个观测值。您需要调整小组的审美吗?
1 num month PM 10 PM 2.5 NO NO2 2 1 1月24 10 2.59 8.61 3 2 2月45 20 2.14 9.94 4 3 3月40 20 2.97 10.94 5 4 4月51 20 2.16 11.27 6 5 5月36 16 1.91 10.3 7 6 6月33 13 1.89 8.85 8 7 7月26 11 1.87 6.43 9 8 8月28 13 2 9.4 10 9 9月32 15 1.45 7.01 11 10 10月35 15 1.26 7.77 12 11 11月24 12 1.66 7.65 13 12 12月21 11 2.06 8.22
答案 0 :(得分:0)
您可以解决在美学上添加group = 1
的问题,但是由于将几个月来的日语unicode字符转换为factor
类型,结果在美学上并不令人满意。
另一种方法是使用连续刻度,同时绘制从1到12个月的数字的线,然后手动添加标签和分隔符-scale_x_continuous(breaks = 1:12, labels = month_label)
。
请参见下面的代码:
aqi <- structure(list(num = 1:12, month = structure(c(1L, 5L, 6L, 7L,
8L, 9L, 10L, 11L, 12L, 2L, 3L, 4L), .Label = c("1<U+6708>", "10<U+6708>",
"11<U+6708>", "12<U+6708>", "2<U+6708>", "3<U+6708>", "4<U+6708>",
"5<U+6708>", "6<U+6708>", "7<U+6708>", "8<U+6708>", "9<U+6708>"
), class = "factor"), PM10 = c(24L, 45L, 40L, 51L, 36L, 33L,
26L, 28L, 32L, 35L, 24L, 21L), PM2.5 = c(10L, 20L, 20L, 20L,
16L, 13L, 11L, 13L, 15L, 15L, 12L, 11L), NO = c(2.59, 2.14, 2.97,
2.16, 1.91, 1.89, 1.87, 2, 1.45, 1.26, 1.66, 2.06), NO2 = c(8.61,
9.94, 10.94, 11.27, 10.3, 8.85, 6.43, 9.4, 7.01, 7.77, 7.65,
8.22)), row.names = c(NA, -12L), class = "data.frame")
aqi$num <- NULL
library(ggplot2)
library(reshape2)
month_label <- aqi$month
aqi$month <- 1:nrow(aqi)
plot.data <- melt(aqi, id.vars= "month")
ggplot(plot.data) +
geom_line(mapping = aes(x = month, y = value , colour = variable)) +
labs (x = "month", y = "value", title = "AIR") +
scale_x_continuous(breaks = 1:12, labels = month_label)
输出: