ggplot输出具有多个比例

时间:2018-02-20 19:08:49

标签: r ggplot2 data-visualization

我有一个不同类型的数据(“数字”或“货币”),需要在图表中融化并输出。我无法弄清楚如何适应多种尺度。以下是该问题的一个示例:

library(scales); library(melt)

# Generate some random 
V1 <- 1:20
V2 <- sample(1:100, 10, replace = F)
V3 <- sample(1: 100, 10, replace = F)
V3 <- dollar(V3)

# Melt data
data <- data.frame(V1 = V1, V2 = V2, V3 = V3)
data_melt <- melt(data, id.vars = c("V1"))


# Now I want to plot this data with different scales
ggplot(data_melt, aes(x = V1, y = value , col = variable)) + 
    geom_point()

1 个答案:

答案 0 :(得分:0)

scales::dollarV3转换为字符串,然后data.frame转换为因子,然后reshape2::melt将与V2合并,转换{{1}从整数和V2从因子到字符串。这些都不是你想要的。

相反,请将您的数据保留为ggplot内部的数字,然后您可以将适当的V3函数传递给scales,例如

scale_y_continuous

但是,您既不能格式化也不能格式化轴,因此如果library(tidyverse) set.seed(47) df_wide <- data_frame(V1 = 1:20, V2 = sample(100, 20, replace = TRUE), V3 = sample(100, 20, replace = TRUE)) df_long <- df_wide %>% gather(variable, value, -V1) ggplot(df_long, aes(V1, value, color = variable)) + geom_point() + scale_y_continuous(label = scales::dollar_format()) V1具有不同的单位,您必须做出选择。另一种选择是分别对它们进行刻面或绘图。