【问题标题】:how to resize plot area in R mschart如何在 R mschart 中调整绘图区域的大小
【发布时间】:2018-07-30 14:41:48
【问题描述】:

我正在使用 R 包mschart 将 MS 图表填充到 PPT 中。我已经使用ph_with_chart_at 函数将多个图表添加到一张幻灯片中,以定义 ppt 的位置。但是,地块太小了。

如何调整绘图的大小?

示例:

这里是示例代码,当你打开ppt时,我想放大绘图区域的大小或控制y轴之间的空间40%、50%、60%...

library(officer)
library(mschart)
library(dplyr)

data <- data.frame(Name=c("a","a","a","a","b","b","b","b"),
                   wave_id=c("2017Q1","2017Q2","2017Q3","2017Q4","2017Q1","2017Q2","2017Q3","2017Q4"),
pct=c(0.68,0.71,0.70,0.72,0.57,0.57,0.57,0.58))

data1 <- data%>%
  ms_linechart(x="wave_id",y="pct",group="Name")%>%
  chart_labels(title=NULL,xlab="",ylab="")%>%
  chart_ax_y(limit_min = 0.4,limit=0.8,
             num_fmt='0%%',major_tick_mark="none",minor_tick_mark="none")

data1_theme<- mschart_theme(
  legend_text = fp_text(font.size=8),
  axis_text = fp_text(font.size=8),
  legend_position = "r",
  grid_major_line=fp_border(width=))

pptsdata1 <- set_theme(data1,data1_theme)


doc <- read_pptx()

doc <-doc%>% 
  add_slide(layout = "Title and Content", master = "Office Theme")%>%
  ph_with_chart_at(chart=pptsdata1,left=1,top=2,height=1.55,width=8)

print(doc, target = "my_plot.pptx")

如果查看输出的图形,您可以看到该图只占用了一小部分绘图区域,并且在图周围留下了很多空白:

【问题讨论】:

  • 你能提供一个你的问题的基本例子吗?在此处查看如何制作可重现的示例:stackoverflow.com/questions/5963269/…
  • 另外,您是否尝试过ph_with_chart_at 函数中的width 和height 参数?
  • ph_with_chart_at中的width和height参数用于控制图表在ppt上的位置。我同意。我的问题是在创建折线图时,绘图区域很小,我需要去ppt手动调整绘图区域的大小以适应报表。
  • 根据documentation、left和top应该控制现有幻灯片上的位置。如果您可以提供示例代码,我将很乐意提供帮助:目前我只能猜测您的问题。请编辑问题以包含此示例。

标签: r mschart


【解决方案1】:

更改绘图大小

您可以在ph_with_chart_at 函数中使用width 和height 参数分别指定输出宽度和高度,而left 和top 参数控制幻灯片中的位置。例如ph_with_chart_at(chart=pptsdata1, left=2, top=1, height=3, width=8)

编辑绘图边距的大小(即绘图周围的空白)

当您试图隐藏轴的标题时,就会出现问题。由于似乎没有办法完全抑制它们,我们:

  1. 用一个空格替换标签,即""
  2. 将轴标题字号改为axis_title = fp_text(font.size=1)

更新您的示例:

library(officer)
library(mschart)
library(dplyr)

data <- data.frame(Name=c("a","a","a","a","b","b","b","b"),
                   wave_id=c("2017Q1","2017Q2","2017Q3","2017Q4","2017Q1","2017Q2","2017Q3","2017Q4"),
pct=c(0.68,0.71,0.70,0.72,0.57,0.57,0.57,0.58))

data1 <- data%>%
  ms_linechart(x="wave_id",y="pct",group="Name")%>%
  chart_labels(title=NULL,xlab=" ",ylab=" ")%>%
  chart_ax_y(limit_min = 0.4,limit=0.8,
             num_fmt='0%%',major_tick_mark="none",minor_tick_mark="none")

data1_theme<- mschart_theme(
  axis_title = fp_text(font.size=1),
  legend_position = "r",
  grid_major_line=fp_border(width=))

pptsdata1 <- set_theme(data1, data1_theme)

doc <- read_pptx()

doc <-doc%>% 
  add_slide(layout = "Title and Content", master = "Office Theme")%>%
  ph_with_chart_at(chart=pptsdata1, left=1,  top=1,  height=3,  width=8)

print(doc, target = "my_plot.pptx")

【讨论】:

  • 这是图表区域,我想调整绘图区域的大小(不包括图例、轴标题)
  • 好的,我想我们现在已经到了!我希望我的反馈可以帮助您了解如何在将来的情况下使问题更清楚:清楚地说明确切的问题以便其他人知道如何提供帮助很重要:) 如果您发现解决方案有用,您可以将其标记为已接受请点赞? stackoverflow.com/help/someone-answers
  • 你能解释一下为什么 legend_text=fp_text(font.size=0) 吗?
  • 如果您将答案标记为已接受并投赞成票,我会告诉您;)开个玩笑,我认为这是偶然留下的。刚刚从答案中删除它。
猜你喜欢
  • 2012-08-20
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
  • 2012-07-27
  • 2017-08-13
  • 1970-01-01
相关资源
最近更新 更多