我有一个不同类型的数据(“数字”或“货币”),需要在图表中融化并输出。我无法弄清楚如何适应多种尺度。以下是该问题的一个示例:
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()
答案 0 :(得分:0)
scales::dollar
将V3
转换为字符串,然后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
具有不同的单位,您必须做出选择。另一种选择是分别对它们进行刻面或绘图。