相关疑难解决方法(0)

ggplot stat_bin2d图中的渐变中断

stat_bin2dggplot2包中创建了一个2d直方图.我想控制颜色渐变中的断点数,以及这些断点所在的位置.我敢肯定我只是忽略了一些小事,但我无法弄清楚如何控制分档中的休息时间.

例:

x <- rnorm(100)^2
y <- rnorm(100)^2
df <- data.frame(x,y)
require(ggplot2)
p <- ggplot(df, aes(x, y)) 
p <- p + stat_bin2d(bins = 20)
p + scale_colour_gradient2(breaks=c(1,2,3,4,5,6))
Run Code Online (Sandbox Code Playgroud)

这会产生:

在此输入图像描述

c(5,10,15)尽管我徒劳地尝试休息,但这个情节只有3次休息c(1,2,3,4,5,6))

任何提示?

r ggplot2

23
推荐指数
2
解决办法
6804
查看次数

如何返回R中的小数位数

我在R.工作.我有十进制度的一系列坐标,我想按这些数字的小数位数排序这些坐标(即我想丢弃小数位数太少的坐标).
R中是否有一个函数可以返回一个数字所具有的小数位数,我可以将其合并到函数编写中?
输入示例:

AniSom4     -17.23300000        -65.81700

AniSom5     -18.15000000        -63.86700

AniSom6       1.42444444        -75.86972

AniSom7       2.41700000        -76.81700

AniLac9       8.6000000        -71.15000

AniLac5      -0.4000000        -78.00000
Run Code Online (Sandbox Code Playgroud)

理想情况下,我会编写一个废弃AniLac9和AniLac 5的脚本,因为这些坐标没有以足够的精度记录.我想丢弃经度和纬度都少于3个非零十进制值的坐标.

r

18
推荐指数
3
解决办法
2万
查看次数

将ggplot2色标连续缩放的最简单方法是什么?

假设我有这个情节:

ggplot(iris) + geom_point(aes(x=Sepal.Width, y=Sepal.Length, colour=Sepal.Length)) + scale_colour_gradient()

什么是离散色标的正确方法,如下面接受的答案下面显示的图(ggplot stat_bin2d图中的渐变断点)?

ggplot正确识别离散值,并为这些使用离散标度,但我的问题是,如果你有连续数据,你想要一个离散的颜色条(每个方格对应一个值,方块仍然以渐变着色),什么是最好的方法吗?离散/分箱是否应该发生在ggplot之外并作为单独的离散值列放入数据帧中,或者有没有办法在ggplot中进行?我正在寻找的一个例子类似于此处显示的比例: 在此输入图像描述

除了我正在绘制散点图而不是像geom_tile/ heatmap 这样的东西.

谢谢.

plot r heatmap ggplot2

14
推荐指数
2
解决办法
1万
查看次数

如何在ggplot2中为离散变量创建渐变颜色?

我有大约100个有序类别的数据.我想将每个类别分别绘制为一条线,线条颜色范围从低值(比如蓝色)到高值(比如红色).

这是一些示例数据和一个图.

# Example data: normal CDFs

library(ggplot2)

category <- 1:100
X <- seq(0, 1, by = .1)
df <- data.frame(expand.grid(category, X))
names(df) <- c("category", "X")
df <- within(df, {
  Y <- pnorm(X, mean = category / 100)
  category <- factor(category)
  })

# Plot with ggplot
qplot(data = df, x = X, y = Y, color = category, geom = "line")
Run Code Online (Sandbox Code Playgroud)

这会产生漂亮的彩虹(下图)在此输入图像描述

但我宁愿从蓝色到红色渐变.我有什么想法可以做到这一点?

r ggplot2

14
推荐指数
2
解决办法
1万
查看次数

ggplot手动设置scale_color_gradientn

我有这样的数据框

BP        R2      LOG10
96162057 0.2118000 2.66514431
96162096 0.0124700 0.31749391
96162281 0.0008941 0.07012148
96163560 0.5011000 2.48505399
96163638 0.8702000 3.37778598
Run Code Online (Sandbox Code Playgroud)

我想在BP10上绘制BP,并用R2对点进行着色.R2是0-1的连续值.

myplot <- read.cvs("mytable.csv",head=TRUE)
attach(myplot)
ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point() 
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是我想以手动选择的间隔和颜色显示R2颜色,如下所示(如果我有离散值).

ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point() + 
      scale_color_manual(breaks= c("1","0.8","0.6","0.4","0.2","0"), 
                values = c("red","yellow","green","lightblue","darkblue"))
Error: Continuous value supplied to discrete scale
Run Code Online (Sandbox Code Playgroud)

这看起来很漂亮,但我宁愿设置我自己的颜色.

ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point(shape=1) + 
               scale_colour_gradientn(colours = rainbow(10))
Run Code Online (Sandbox Code Playgroud)

那么,我怎样才能从连续值(1-0.8,0.8-0.6,0.6-0.4,0.4-0.2,0.2-0)手动选择间隔,并根据我的喜好(红色,黄色,绿色,浅色,深蓝色)进行着色?颜色之间的平滑渐变很酷,但并不重要.

gradient r colors ggplot2

13
推荐指数
2
解决办法
1万
查看次数

将注释和段添加到图例元素组

我的ggplot有以下传说:
在此输入图像描述

我想将各个图例变量分组,并添加组名称和"括号",如下图所示:
在此输入图像描述

我的数据有2列:
1 - 美国
2州 - 活动水平,范围从10(高) - 1(低)

我也在使用数据 -
us <-map_data("state"),它包含在ggplot/map包中.

我的代码:

ggplot()+ geom_map(data=us, map=us,aes(x=long, y=lat, map_id=region),
                fill="#ffffff", color="#ffffff", size=0.15) +
geom_map(data=dfm4,map=us,aes(fill=ACTIVITY.LEVEL,map_id=STATENAME)
,color="#ffffff", size=0.15)+  

scale_fill_manual("Activity",
values=c("10"="red4","9"="red2","8"="darkorange3",
"7"="orange3","6"="orange1",                                        
"5"="gold2","4"="yellow","3"="olivedrab3","2"="olivedrab2",
"1"="olivedrab1"),
breaks=c("10","9","8","7","6","5","4","3","2","1"),
labels=c("High - 3","High - 2","High - 1","Moderate - 2","Moderate - 
1","Minimal - 2","Minimal - 1","Low - 3","Low - 2","Low - 1"))+
labs(x="Longitude",y="Latitude")
Run Code Online (Sandbox Code Playgroud)

可重复的数据:

state<-c("alabama", 
"alaska", "arizona", "arkansas", "california", "colorado", "connecticut", 
"delaware", "district of columbia", "florida", "georgia", "hawaii", 
"idaho", "illinois", "indiana", "iowa", "kansas", "kentucky", 
"louisiana", "maine", "maryland", …
Run Code Online (Sandbox Code Playgroud)

r legend ggplot2

7
推荐指数
2
解决办法
284
查看次数

带有分隔符而不是刻度的连续颜色条

图片应该很好地说明了我想要实现的目标。理想情况下,生成的颜色条将保持连续性,即应该基于连续而不是离散的美学,或者至少非常接近于表现得像它。

这也意味着,不仅仅是将离散填充的图例键靠得足够近的简单方法。

是的,我可以创建一个假的 legend,但我想要一个在图例绘图级别进行修改的解决方案。

我也会很高兴有趣的网格技巧!

library(ggplot2)

ggplot(iris, aes(Sepal.Length, y = Sepal.Width, fill = Petal.Length))+
  geom_point(shape = 21) +
  scale_fill_continuous() +
  guides(fill = guide_colorbar(ticks.colour = "black"))
Run Code Online (Sandbox Code Playgroud)

那是photoshopped,道歉!我不想创建箭头,只是使用分隔符而不是刻度的连续比例 在此处输入图片说明

最终目标是重现此线程中最初提出的颜色条 在此处输入图片说明

然而,这不是关于创建离散梯度条,这只是关于分隔符!

离散渐变栏是没有问题的,也有已经在那里的解决方案(例如,/sf/answers/4378108381//sf/answers/4378973441/https://开头stackoverflow.com/a/50540633/7941188 )

r legend ggplot2

7
推荐指数
2
解决办法
375
查看次数

调整 key_glyph ggplot 生成的图例字形的高度和宽度

我很高兴地发现我可以通过添加key_glyph = draw_key_rect到我的 geom 层来更改图例中使用的字形。我想让图例更宽更短,以类似于Timo Grossenbacher在这张地图中的图例:

我试过调整scale_fill_manual(guide = guide_legend(keyheight = unit(0.01, units = "mm") , keywidth = unit(40, units = "mm")))改变图例尺寸的方法,但似乎只有当我把字形变大时才有效。我似乎无法使键高更小。

有没有更好的方法来调整图例字形的尺寸?

在此处输入图片说明

此处简化代码:

df <- data_frame(x_value = c(1:10),
                 y_value = c(rev(1:10)),
                 value = c("a","a","a","a","b","b","b","b","c","c"))
library(ggplot2)

ggplot(data = df) + 
  geom_point(aes(x_value, y_value, fill = value),
             shape = 21,
             size = 9,
             key_glyph = draw_key_rect) +
  theme(legend.justification = c(0,0), # set which corner of legend legen.position references
        legend.position = c(0.05, 0.04)) +
  scale_fill_manual(values = c("red", "green", …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 legend-properties

6
推荐指数
1
解决办法
542
查看次数

ggplot 使图例符号变细

我试图从 BBC 复制这个数字。我很接近,但我正在努力使图例符号变薄。这可能吗?

在此处输入图片说明

library(tidyverse)
library("rio")
url <- "https://gist.githubusercontent.com/ericpgreen/a728be304b811fe7708699682eb4ba42/raw/fd924596e30c131dbaf97c00c9d9863bb40abb9a/bbcCovid.R"
df_plot <- rio::import(url)

ggplot(df_plot, aes(x=date, 
                    y=reorder(Country.Region, 
                              total, 
                              order=TRUE))) +
  geom_tile(aes(fill=casesRollf), 
            color="white", 
            na.rm = TRUE
            #, key_glyph = draw_key_timeseries
  ) +
  theme_bw() + theme_minimal() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        legend.title = element_blank(),
        plot.title.position = "plot") +
  scale_x_date(breaks = as.Date(c("2020-02-14",
                                  "2020-03-05",
                                  "2020-03-25",
                                  "2020-04-14")),
               date_labels = "%d %b") +
  scale_fill_manual(values=
                      c("#e4e4e4", "#ffeed2", 
                        "#ffda64", "#faab19", 
                        "#d2700d",  
                        "#d56666", "#9a1200", 
                        "#5b0600", "#000000"),
                    guide = guide_legend(reverse = TRUE),
                    labels=c("No cases", "1 to 10",
                             "11 to 50", "51 …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

6
推荐指数
1
解决办法
164
查看次数

如何使用 geom_contour_fill 制作离散渐变色条?

我根据这样的一段代码绘制了一张地图:

ggplot(faithfuld, aes(y=eruptions, x=waiting, z=100*density)) +
geom_contour_filled(breaks = c(-Inf,-2., -1.5, -1., -0.5, 0, 0.5, 1, 1.5, 2, 3, 4, 5, 7, 9, 11,Inf))+
theme(plot.title = element_text(size = 10,hjust = 0.5))
Run Code Online (Sandbox Code Playgroud)

这是我的情节目前看起来像: 在此处输入图片说明 但是我的老板让我把这个传奇变成这样: 在此处输入图片说明 或者像这样:在此处输入图片说明 此链接 ( https://ggplot2.tidyverse.org/reference/theme.html ) 中的参数只是为图例提供了细微的更改。而且我找不到任何可以实现这一点的论据,ggplot 是否可行?或者我必须使用其他绘图包?

创建具有不同间隔宽度且图例级别之间没有间距的离散颜色条这个问题(答案第 4 号)提供了一种方法,可以创建像我的老板要求的颜色条,但是,我正在使用geom_contour_filled(breaks = c(-Inf,-2., -1.5, -1., -0.5, 0, 0.5, 1, 1.5, 2, 3, 4, 5, 7, 9, 11,Inf))此参数,因此图例始终与大量文字: 在此处输入图片说明 有什么解决办法吗?

r legend ggplot2

6
推荐指数
1
解决办法
2456
查看次数

将标签放置在 binned / step colorbar guide 中的 bin 中间?

推理:我想轻松使用现成的连续尺度(来自任何提供scale_..._continuous等的包),用于有序因子类数据,例如mtcars$cyl. 因为这些数据只包含几种离散值,我想直接标记图例键,而不是 bin 限制。怎么做?

library(ggplot2)

ggplot(mtcars, aes(mpg, disp, color = cyl))+
  geom_point() +
  scale_color_continuous(limits = range(mtcars$cyl),
                         guide = guide_colorsteps(ticks.colour = "black"))
Run Code Online (Sandbox Code Playgroud)

不想要的:

hacky 方式,实际上是四个 (!) hacks,并且是不想要的。

# Hack 1 - create the colors manually from the palette. This is already annoying. 
cont_col <- colorRampPalette(c("#132B43","#56B1F7"))(length(unique(mtcars$cyl)))

# Hack 2- you need to modify the underlying draw_key function 
# from https://github.com/tidyverse/ggplot2/issues/2844
draw_key_polygon2 <- function(data, params, size) {
  lwd <- min(data$size, min(size) / 4)
  grid::rectGrob(
    width = grid::unit(1, "npc"),
    height …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

4
推荐指数
1
解决办法
63
查看次数

如何在 R 中修改连续的 ggplot 图例

我正在使用 ggplot 绘制南美洲平均气温的偏差图表。

为了绘制此图,我使用以下代码:

ggplot(bias.df2) +  
  geom_tile(aes(x=x, y=y, fill=pr), alpha=0.8) + 
  scale_fill_viridis(na.value="white") +
  coord_equal() +
  theme(legend.position="bottom") +
  theme(legend.key.width=unit(2, "cm"))+
  scale_color_continuous(limits=c(-10,10),breaks=brkbias)
Run Code Online (Sandbox Code Playgroud)

生成以下颜色条:

ggplot图例

但我需要颜色条看起来像这样:

毕业生传奇

我尝试修改颜色条的限制,但似乎没有任何东西可以生成我需要的那种绘图。非常感谢任何帮助解决这个问题的帮助。

编辑:我正在使用的数据可以在此 csv文件中找到。

r ggplot2 colorbar

-2
推荐指数
1
解决办法
788
查看次数

标签 统计

r ×12

ggplot2 ×11

legend ×3

colorbar ×1

colors ×1

gradient ×1

heatmap ×1

legend-properties ×1

plot ×1