簡體   English   中英

使用 R 的氣泡圖 - x 軸變量不是數字順序 + 軸縮放

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM