[英]Bubble Chart using R - x axis variables are not in numerical order + Scaling of axis
我有以下 R 代碼,其中包含一些虛擬數據。 我正在嘗試創建一個氣泡圖,其中氣泡的大小取決於金額,並根據 x 軸上的盈利能力(金額的百分比)和波動率(金額的百分比)進行定位在 y 軸上。 代碼如下:
rio_csv <- import("~/Desktop/R/Dummy Data.csv")
# Select columns to go into df
df <- data.frame("Volpc" = rio_csv[,6],"Profitpc"= rio_csv[,5],"Amount"= rio_csv[,4])
#Plot Bubble Chart
plot <- ggplot(df, aes(x = Profitpc, y = Volpc, size = Amount)) +
geom_point(alpha = 0.2) + scale_size(range = c(5,15)) + xlab("Profitability %") +
ylab("Volatility %")
plot
x 軸上的盈利能力度量是百分比,y 軸上的波動率是百分比。 它們都具有數據類型“字符”。
我的第一個問題是當我運行代碼時會出現氣泡圖,但 x 軸不是數字順序,y 軸是數字順序。
我嘗試使用代碼 df$Profitpc <- as.numeric(df$Profitpc) 但這會導致列中的所有值都變為 go NA,並帶有警告“強制引入的 NA”。
有沒有一種方法可以對 x 軸進行排序,使其按數字順序(遞增)?
我的第二個問題是兩個軸的縮放都沒有適當地縮放。 理想情況下,我希望兩個軸都具有適當的縮放比例,例如 0 到最大 % 值。 有沒有辦法做到這一點? 如果這很明顯,我很抱歉。 我附上了圖表的圖片來說明這些問題。
您向我們提供了您的代碼,但沒有提供您的數據,因此這不是一個簡單的獨立示例或代表。 [有關如何向我們提供幫助您所需的更多建議,請參閱此帖子。]
但是,根據您描述的症狀,我猜測df$Profitpc
包含諸如27.0%
之類的值。 這就是as.numeric()
失敗的原因:它不知道如何處理%
。 因此,您的解決方案是重新格式化您的輸入數據,以便df$Profitpc
真正是一個數字。 然后圖表將按照您的意願運行。 由於您沒有向我們提供您的輸入數據,因此您只能靠自己...
就個人而言,我也會對df$Volpc
進行相同的更改。 正如您所發現的,按照您想要的順序呈現數據只是運氣。 一旦你得到了數字數據(因此,你想要的顯示順序),你可以使用ggplot
的特性來按照你想要的方式格式化它的外觀。
這里的教訓是,將數據的派生與其呈現分開是很重要的。
我第二個@Limey。 您仍然可以嘗試檢查Profitpc
是否是一個因素,如果是,則將其轉換為如下character
:
ggplot(df, aes(x = as.character(Profitpc), y = (Volpc), size = Amount)) +
geom_point(alpha = 0.2) + scale_size(range = c(5,15)) + xlab("Profitability %") +
ylab("Volatility %")
仍然不能保證順序正確,因此我還將變量轉換為數值變量。 您可以像這樣使用閱讀器 package 中的readr
parse_number()
:
ggplot(df, aes(x = parse_number(Profitpc), y = parse_number(Volpc), size = Amount)) +
geom_point(alpha = 0.2) + scale_size(range = c(5,15)) + xlab("Profitability %") +
ylab("Volatility %")
數據
df <- tibble::tribble(
~Profitpc, ~Volpc, ~Amount,
"10%", "30%", 10L,
"15.50%", "20%", 15L,
"81.40%", "80.30%", 6L,
"50%", "30.3&", 12L
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.