【问题标题】:Format numbers in charts as percentages [duplicate]将图表中的数字格式化为百分比[重复]
【发布时间】:2011-10-21 10:23:12
【问题描述】:

可能重复:
How to format a number as percentage in R?

这一定是一个新手问题,但是如何将图表中的数字(比如 PerformanceAnalytics 中的 PerformanceSummary)格式化为百分比?我使用的数据格式为 0.04 等。一切正常,除了我希望图表显示百分比。

提前致谢

编辑:

这是我现在的做法(为简单起见,使用标准数据):

library("PerformanceAnalytics")
data(managers)
charts.PerformanceSummary(managers)

当我去谷歌搜索提供自己的标签时,我把它放在这里。

【问题讨论】:

  • 运行charts.PerformanceSummary((sprintf(%1.2f%%", 100*funds))时报错数据不能转换成时间序列。
  • 一般来说,答案是为情节提供您自己的自定义标签。所以答案取决于你使用的是哪种绘图系统,即​​ base、lattice 或 ggplot。如果您发布可重现的示例,您更有可能得到答案。
  • 查看您使用的 summaryplot 的源代码,很明显如果不重写该包中的几个函数,您将无法做到这一点。我发现至少有一个对底层基础绘图函数的三重嵌套调用。最明显的是将数据乘以 100。不太明显的是重写包的那部分。
  • 我将把它分解成单独的图表并使用下面提供的@Andrie 解决方案。

标签: r


【解决方案1】:

除非我错过了什么,否则我认为这根本不是一个新手问题。

(免责声明:我认为这个答案不是特别优雅,而且图形很烂。但希望它可以用作模板,以便其他人可以改进并发布一些适当的代码。)

这是在基本图形中执行此操作的一种方法:

  • 设置不带 y 轴的绘图,即使用 yaxt="n"
  • 计算您希望标签的位置,例如使用seq
  • 使用sprintfround 将标签格式化为带百分号的文本

一些代码:

set.seed(1)
x <- runif(10)
plot(x, type="h", yaxt="n")
yLabels <- seq(0.2, 0.8, 0.2)
axis(2, at=yLabels, labels=sprintf(round(100*yLabels), fmt="%2.2f%%"), las=1)

剧情:

【讨论】:

  • 太棒了。非常感谢你。一旦我有足够的声誉,我会回来并支持这个答案。
【解决方案2】:

简短的回答是“你不能”。

获取您的绩效图表。这是一段很大的编程代码,由某人编写以制作精美的图表,并且在某些时候,作者决定用小数值标记 Y 轴以显示它是什么——也许是本月要解雇的经理的比例。

如果您想将其更改为百分比,则需要在该代码中的某个位置将其更改为将轴标签乘以 100,在它们上面贴上“%”符号,然后绘制它们。

您可以这样做,因为 R 和该性能图表包是在允许您编辑其代码的许可下发布的。去这样做。你会学到东西。

图形实体不像在 Excel 或 SPSS 中那样独立存在 - 您不能只说“将我所有的分数轴标签重新设置为百分比”。它只是不能那样工作。

【讨论】:

  • 我修复了 R 后会报告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 2015-07-17
  • 1970-01-01
  • 2015-09-30
  • 2016-03-13
相关资源
最近更新 更多