我正在尝试使用Shiny创建一个Web应用程序,在其上显示一些图表。
我已经使用ggplot在R Studio中创建了许多绘图。我正在尝试在我正在创建的Web应用程序上显示以下情节。
我的R服务器代码:
shinyServer(function(input, output){
output$bakePlot <- renderPlotly({
ggplot(sales_bakery, aes(ProductName, ProductSales))+
stat_summary(fun.y=sum,geom="bar",colour="red",fill="red",show.legend = FALSE) +
coord_cartesian(ylim = c(7000, 9500)) + ggtitle("January Sales in Bakery") +
xlab("Category") + ylab("Quantity Sold")
})
})
UI代码:
shinyUI(
dashboardPage(
dashboardHeader(title = "Dashboard"),
dashboardSidebar(
menuItem("Categories"),
menuSubItem("Cereals"),
menuSubItem("Bakery"),
menuItem("Products")
),
dashboardBody(
fluidRow(
box(plotlyOutput("bakePlot"))
)
)
)
)
当我使用此代码时,我会在网络应用程序上显示以下内容。
我的问题是,如何在第一张图片中以与第一张图片相同的方式在Web应用上设置此图?
我的主题代码是:
bakeryMonthlyPlot <- bakeryMonthlyPlot +
theme(axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text.x = element_text(colour = "black", size = 14),
axis.text.y = element_text(colour = "black", size = 14),
panel.background = element_rect(fill = "white"),
panel.grid.minor = element_blank(),
panel.grid.major = element_blank(),
axis.line = element_line(colour = "black", size = 1),
legend.position = "right",
plot.title = element_text(lineheight = 1.8, face = "bold"))
有人可以告诉我在哪里放置我的主题代码以便将主题应用到Web应用程序中的绘图中吗?
非常感谢任何帮助。
答案 0 :(得分:1)
是@ eipi10,我可以通过将主题添加到情节的底部来实现。
对于将来对此感兴趣的人,代码现在看起来像这样:
shinyServer(function(input, output){
output$bakePlot <- renderPlotly({
ggplot(sales_bakery, aes(ProductName, ProductSales))+
stat_summary(fun.y=sum,geom="bar",colour="red",fill="red",show.legend = FALSE) +
coord_cartesian(ylim = c(7000, 9500)) + ggtitle("January Sales in Bakery") +
xlab("Category") + ylab("Quantity Sold")+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text.y = element_text(colour = "black", size = 14),
panel.background = element_rect(fill = "white"),
panel.grid.minor = element_blank(),
panel.grid.major = element_blank(),
axis.line = element_line(colour = "black", size = 1),
legend.position = "none",
plot.title = element_text(lineheight = 1.8, face = "bold"))
})