Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在ggplot2中增加图例显示中的打断_R_Ggplot2 - Fatal编程技术网

R 在ggplot2中增加图例显示中的打断

R 在ggplot2中增加图例显示中的打断,r,ggplot2,R,Ggplot2,我有一个数据框,我想使用ggplot2创建热图,我的数据框如下所示: dput(head(x,50)) structure(list(DAY = structure(c(15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 1

我有一个数据框,我想使用ggplot2创建热图,我的数据框如下所示:

dput(head(x,50))
structure(list(DAY = structure(c(15765, 15765, 15765, 15765, 
15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 
15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 
15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 
15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 
15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 15765, 
15765), class = "Date"), Time = c("00:14", "00:29", "00:44", 
"00:59", "01:14", "01:29", "01:44", "01:59", "02:14", "02:29", 
"02:44", "02:59", "03:14", "03:29", "03:44", "03:59", "04:14", 
"04:29", "04:44", "04:59", "05:14", "05:29", "05:44", "05:59", 
"06:14", "06:29", "06:44", "06:59", "07:14", "07:29", "07:44", 
"07:59", "08:14", "08:29", "08:44", "08:59", "09:14", "09:29", 
"09:44", "09:59", "10:14", "10:29", "10:44", "10:59", "11:14", 
"11:29", "11:44", "11:59", "12:14", "12:29"), CPU = c(12.9428571428571, 
8, 8.03333333333333, 7.83333333333333, 6.9, 7.1, 6.9, 5.2, 5.66666666666667, 
7, 6.46666666666667, 5.93333333333333, 5.9, 6.4, 4.73333333333333, 
4.2, 8.13333333333333, 11.8333333333333, 16.1, 22.1, 27.2, 28.2333333333333, 
25.3666666666667, 26.1666666666667, 24, 23.2, 24.1, 24.7666666666667, 
27, 27.8333333333333, 28.6, 30.6333333333333, 38.3, 33.5, 36.9, 
41.7333333333333, 50.0666666666667, 46.9666666666667, 45.6666666666667, 
45.1333333333333, 52.9333333333333, 49.9, 47.8666666666667, 47.7, 
55.5, 50, 48.8333333333333, 48.2333333333333, 53.6666666666667, 
50.1379310344828)), .Names = c("DAY", "Time", "CPU"), row.names = c(NA, 
50L), class = "data.frame")
当我做以下操作时,我只看到瓷砖上的一些点,大部分是白色的。我需要在我的热图中有正方形的颜色

ggplot(x, aes(DATE, Time, fill=CPU)) + geom_tile() + theme_bw()
 + scale_x_datetime(breaks = "2 weeks", labels=date_format("%b %d, %Y"))
 + scale_y_datetime(breaks="2 hours", labels=date_format("%H:%M"))
 + guides(fill = guide_legend(keywidth = 3, keyheight = 1)) 
+ scale_fill_gradientn(name="CPU Utilization", colours=c("#F0FFFF","#AEEEEE","#ADD8E6","#87CEFA","#00FF00","#E4F224","#C9821E", "#FF0000", "#FF0000"), value=c(0,0.19,0.2,0.5,0.8,0.81,1),
limits=c(0,100), breaks = c(20, 30, 40, 50, 60, 70, 80, 90, 100))

您可以使用
scale\u fill\u gradientn()
获取所需颜色的填充值。使用参数
limits=c(0100)
您将获得此范围内的图例。然后使用参数
values=
colors=
设置颜色的分布。在我的示例中,比例从暗绿色开始,然后变为绿色,变为红色,然后变为暗绿色,再变为红色。最后是绿色和深绿色。使用
values=
I以0到1的比例设置点,其中颜色应该改变-从0开始,红色从0.2开始,到0.8结束,依此类推

ggplot(y, aes(DAY, Time, fill=CPU)) + geom_tile() + 
  theme_bw() + 
  scale_x_date(breaks = "2 weeks", labels=date_format("%b %d, %Y")) + 
  scale_colour_discrete(name="15 Minute CPU") + 
  scale_fill_gradientn(name="CPU Utilization",
        colours=c("darkgreen","green","red","darkred","red","green","darkgreen"),
        values=c(0,0.19,0.2,0.5,0.8,0.81,1),
        limits=c(0,100),
        breaks = c(20, 30, 40, 50, 60, 70, 80, 90, 100))

您可以使用
缩放填充梯度n()
获得所需颜色的填充值。使用参数
limits=c(0100)
您将获得此范围内的图例。然后使用参数
values=
colors=
设置颜色的分布。在我的示例中,比例从暗绿色开始,然后变为绿色,变为红色,然后变为暗绿色,再变为红色。最后是绿色和深绿色。使用
values=
I以0到1的比例设置点,其中颜色应该改变-从0开始,红色从0.2开始,到0.8结束,依此类推

ggplot(y, aes(DAY, Time, fill=CPU)) + geom_tile() + 
  theme_bw() + 
  scale_x_date(breaks = "2 weeks", labels=date_format("%b %d, %Y")) + 
  scale_colour_discrete(name="15 Minute CPU") + 
  scale_fill_gradientn(name="CPU Utilization",
        colours=c("darkgreen","green","red","darkred","red","green","darkgreen"),
        values=c(0,0.19,0.2,0.5,0.8,0.81,1),
        limits=c(0,100),
        breaks = c(20, 30, 40, 50, 60, 70, 80, 90, 100))

@Diszis Elferts,我已经用你的建议更新了我的原始帖子,但仍然有一些问题。我需要用不适合我的颜色填充正方形。@user1471980在您的代码中,比例填充梯度中应该有value=c()而不是value=c()。非常感谢您的帮助。我有一个简短的问题。关于这一点不清楚:值=c(0,0.19,0.2,0.5,0.8,0.81,1),我有9种不同的颜色,每种颜色-中断=c(20,30,40,50,60,70,80,90,100)。当我使用您的值时,图表看起来不正确。我看到CPU大于60的情况比实际情况多得多。有什么想法吗,我如何解决这个问题?这些值是渐变端点的颜色位置。也许最好使用cut()来削减cpu值并使用manualscale@Diszis埃尔弗茨,我已经用你的建议更新了我原来的帖子,但仍然有一些问题。我需要用不适合我的颜色填充正方形。@user1471980在您的代码中,比例填充梯度中应该有value=c()而不是value=c()。非常感谢您的帮助。我有一个简短的问题。关于这一点不清楚:值=c(0,0.19,0.2,0.5,0.8,0.81,1),我有9种不同的颜色,每种颜色-中断=c(20,30,40,50,60,70,80,90,100)。当我使用您的值时,图表看起来不正确。我看到CPU大于60的情况比实际情况多得多。有什么想法吗,我如何解决这个问题?这些值是渐变端点的颜色位置。也许最好使用cut()来削减cpu值,并使用手动缩放