R にサンプル データフレームがあります。
df <- data.frame(product_id= c("A","A","A","B","B","B","C","C"), year = c("2019", "2020", "2021", "2019", "2020", "2021", "2019", "2020"), profit=c(1.5, 2.2, 2.3, 1.4, 1, 16, 1.9, 25), sale = c(1.2, 1.8, 1.9, 2.0, 1.6, 20.0, 3.0, 33.2))
ggplot で、y='year'、x='profit' の 3 つの個別のグラフを描画しようとしています。データは product_id でフィルタリングされます。geom_point はすべて円形になります。これは、製品 A の次のコードによって実現できます。
library(ggplot2)
library(dplyr)
ggplot(df) +
geom_point(data= df %>% filter(product_id =='A'), aes(x=year, y=profit, size=sale), shape = 16, color='Red') +
scale_size_continuous(range = c(5, 10), guide = FALSE) +
labs(x = "Year", y = "Profit")
ただし、カスタマイズのために、y 軸の値 (利益) が 2.0 未満の場合は、円の塗りつぶしの色を変更したいと考えています。境界線は元の色として赤にする必要がありますが、塗りつぶしの色は黄色にする必要があります。上記のグラフでは、2019 年のポイントは赤い枠線と黄色の塗りつぶし色になります。次の方法で試しましたが、うまくいきません。
library(ggplot2)
library(dplyr)
ggplot(test_df) +
geom_point(data= test_df %>% filter(product_id =='A'), aes(x=year, y=profit, size=sale), shape = 16, color='Red') +
scale_size_continuous(range = c(5, 10), guide = FALSE) +
scale_colour_manual(name = 'profit < 2', values = setNames(c('Yellow','Red'),c(T, F)), guide = FALSE) +
labs(x = "Year", y = "Profit")
もう 1 つの問題は、3 つのグラフすべてで、円形のサイズが標準の相対サイズを維持していないことです。次のような標準サイズのスケールを開発しようとしています
'sale' 列の値 <=1.9 の場合。サイズは5になります。
1.9 < 販売値 <= 10 の場合。サイズ範囲は 10 ~ 20 です。
10 < 販売値 <= 20 の場合。サイズは25になります
そして、sale_value > 20 の場合。サイズは30になります。
これをどのように実装できるか、または可能かどうかさえわかりません。