R 的图形生成系统ggplot2
出奇地多才多艺,但我还没有找到一种方法来生成类似这样的瀑布图:
如何使用ggplot2
生成这种图表?
样本数据(类似于显示的图表:
df <- data.frame(
montos = c(420, 210, -170, -140),
row.names = c('Ingresos', 'Otros ingresos', 'Costos fijos', 'Costos variables')
)
df
## montos
## Ingresos 420
## Otros ingresos 210
## Costos fijos -170
## Costos variables -140
需要一些前面的步骤才能生成该图,所以让我们在解释每个步骤的同时尝试生成它。
1.初始化数据
正如您在问题中提出的那样,初始化将是这样的(我只更改
row.names
为nombres
将两者都放在西班牙语中)并且我添加了初始和最终平衡:我们检查一切是否如我们所愿:
2.保持秩序
为了保持数据的顺序,我们必须将它们转换
nombres
为数据类型factor
。3.添加栏目
我们添加一个列
id
和一个tipo
然后我们添加两列,
start
和end
,这将在每个步骤中放置金额的起始值和结束值:如果我没记错的话,你
df
应该是这样的:4. 生成图表
现在是的,要生成图表,我们执行以下操作:
5. 结果
基本上就是这样。根据您对结果图中的兴趣,可以进行一些改进。
你可以在这个演示中看到完整的代码。
6.好东西
这会用换行符替换空格,以使标题更具可读性。
作为替代方案,您可以使用通过 lattice 实现的瀑布包(作者的站点)。
例子:
结果:R-Fiddle