![](/img/trans.png)
[英]ggplot2 | How to plot mean lines for x, y, colour=group, facets=Drug~. Cannot make it look right
[英]How can I make a gradient colour X-Y plot in ggplot2?
我正在嘗試繪制與這一圖相似的圖。
這類似於熱圖,但是明顯不同,因為顏色不對應計數。 我使用geom_point()進行了創建,單個跟蹤之間的差異很小。
library(tidyverse)
data = crossing(
x = seq(-1, 1, by = 0.01),
a = seq(1, 5, by = 0.01)
) %>%
mutate(y = a*x^2)
ggplot(data, aes(x = x, y = y, colour = a)) +
geom_point() +
labs(title = "Plot of y = ax^2")
顯然,這不理想,因為它要花費大量時間並生成超過80k行的數據集。 我敢肯定有更好的方法可以做到這一點。 有什么想法嗎? 謝謝。
編輯:基於@Axeman的評論,我使用了geom_raster。 天真的版本不起作用,即
ggplot(data, aes(x = x, y = y, fill = a)) +
geom_raster()
結果是錯誤
矩陣中的錯誤(NA_character_,nrow = nrow,ncol = ncol):無效的“ nrow”值(太大或不適用)此外:警告消息:在f(...)中:強制將不適用的NA引入整數范圍
似乎與x
和y
每個組合都不相關。 如果我在代碼中切換a
和y
,它確實可以工作。 使用這些信息,此代碼生成了在此特定情況下我正在尋找的內容。
data = crossing(
x = seq(-1, 1, by = 0.01),
y = seq(0, 5, by = 0.01)
) %>%
mutate(a = y/(x^2)) %>%
filter(a <= 5 & a >= 1)
ggplot(data, aes(x = x, y = y, fill = a)) +
geom_raster()
它的工作原理快了很多,但它需要我解決我想繪制了該方程a
。 我認為這與復雜的方程式或經驗數據都無法很好地匹配。 必須有一個更好的方法。
首先,需要使用geom_raster
(感謝@Axeman)。 其次,@ Chris共享的鏈接( https://github.com/tidyverse/ggplot2/issues/2516 )似乎證明了我的問題,即使我使用的是最新的ggplot2軟件包(3.1.0)。
因此最后,此代碼有效:
library(tidyverse)
data_bad = crossing(
x = seq(-1, 1, by = 0.01),
a = seq(1, 5, by = 0.01)
) %>%
mutate(y = a*x^2)
ggplot(data_bad, aes(x = round(x,2), y = round(y,2), fill = a)) +
geom_raster()
唯一的問題是,您需要將舍入數字與數據的精度相匹配,否則該圖的中間會有很多空白。
但是這種解決方案足夠有效。 謝謝您的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.