GGR绘图中的美学错误2

GGR绘图中的美学错误2,r,ggplot2,aesthetics,R,Ggplot2,Aesthetics,我试图通过水力压裂法使用的水量来填充流域。我有数据集(好的)和变量(H2O\U BBL\T)。每个流域有一个值。这就是我使用的代码 ggplot() + geom_polygon(data = well_watershed_ok, aes(x = long, y = lat), fill = well_watershed_ok$H2O_BBL_T) + labs(x = "", y = "", title = "Number of Barrells of Wate

我试图通过水力压裂法使用的水量来填充流域。我有数据集(好的)和变量(H2O\U BBL\T)。每个流域有一个值。这就是我使用的代码

ggplot() + 
geom_polygon(data = well_watershed_ok, aes(x = long, y = lat), 
             fill = well_watershed_ok$H2O_BBL_T) + 
labs(x = "", y = "", title = "Number of Barrells of Water used per Day") + 
scale_color_gradientn("Water BBL/Day", colors = c( "#660000", "#f9f3c2")) + 
theme(legend.position = "bottom", axis.ticks.y = element_blank(), 
      axis.text.y = element_blank(), axis.ticks.x = element_blank(), 
      axis.text.x = element_blank(), 
      plot.title = element_text(lineheight = .8, face="bold",  vjust = 1, size = 12)) + 
coord_equal(ratio=1)

Regions defined for each Polygons
Error: Aesthetics must be either length 1 or the same as the data (222074): fill
因为我得到了这个错误,我检查了我的长度,它们是相等的,但是我检查了一下,看看计算机是否识别出它们是相等的,这是错误的。我该怎么办

identical(well_watershed_ok,well_watershed_ok$H2O_BBL_T)
[1] FALSE

length(well_watershed_ok)
[1] 79

length(well_watershed_ok$H2O_BBL_T)
[1] 79
下面是我的数据

data.frame':    79 obs. of  37 variables:
$ FID_1     : Factor w/ 79 levels "0","1","10","11",..: 1 2 13 24 35 46 57 68 
78 79 ...
$ HUC_8     : Factor w/ 68 levels "11040001","11040002",..: 1 2 3 3 3 3 4 5 6 
7 ...
$ ACRES     : num  26176 420687 188128 1281 657 ...
$ HU_8_NAME : Factor w/ 68 levels "11040001 - CIMARRON HEADWATERS",..: 1 2 3 3 
3 3 4 5 6 7 ...
$ STATES    : Factor w/ 8 levels "AR,OK","AR,OK,TX",..: 5 7 3 3 3 3 3 7 7 7 ...
$ SQ_MILES  : num  40.9 657.32 293.95 2 1.03 ...
$ Count_    : Factor w/ 40 levels "0","1","10","12",..: 1 14 17 2 1 34 1 20 26 
16 ...
$ Sum_Lat_Y : num  0 73.8 775.6 37 0 ...
$ Sum_Long_X: num  0 -204 -2111 -101 0 ...
$ Sum_DF_Ele: num  0 0 0 0 0 ...
$ Sum_GF_Ele: num  0 7691 54745 3223 0 ...
$ Sum_Total_: num  0 9389 144678 6720 0 ...
$ Sum_OilBBL: num  0 0 0 0 0 0 0 181 166 698 ...
$ Sum_Oil_Gr: num  0 0 0 0 0 ...
$ Sum_GasMCF: num  0 0 0 0 0 ...
$ Sum_GasOil: num  0 0 0 0 0 ...
$ Sum_WaterB: num  0 0 0 0 0 ...
$ H2O_BBL_T : num  0 642 0 0 0 ...
$ FID_12    : Factor w/ 79 levels "0","1","10","11",..: 1 2 13 24 35 46 57 68 
78 79 ...
$ FID_12_13 : Factor w/ 79 levels "0","1","10","11",..: 1 2 13 24 35 46 57 68 
78 79 ...
$ HUC_89    : Factor w/ 68 levels "11040001","11040002",..: 1 2 3 3 3 3 4 5 6 
7 ...
$ ACRES_1   : num  26176 420687 188128 1281 657 ...
$ HU_8_NAM_1: Factor w/ 68 levels "11040001 - CIMARRON HEADWATERS",..: 1 2 3 3 
3 3 4 5 6 7 ...
$ STATES_1  : Factor w/ 8 levels "AR,OK","AR,OK,TX",..: 5 7 3 3 3 3 3 7 7 7 
...
$ SQ_MILES_1: num  40.9 657.32 293.95 2 1.03 ...
$ Count1    : Factor w/ 39 levels "0","1","107",..: 1 24 2 1 1 14 1 31 5 22 
...
$ Sum_DF_E_1: num  0 0 0 0 0 ...
$ Sum_GF_E_1: num  0 12299 2499 0 0 ...
$ Sum_Total1: num  0 20844 6950 0 0 ...
$ Sum_OilB_1: num  0 20 0 0 0 ...
$ Sum_Oil__1: num  0 0 0 0 0 ...
$ Sum_GasM_1: num  0 20 0 0 0 ...
$ Sum_GasO_1: num  0 1000 0 0 0 ...
$ Sum_Wate_1: num  0 642 0 0 0 ...

您需要将
scale\u color\u gradientn(…)
替换为
scale\u fill\u gradientn(…)
,因为您的审美观是填充(多边形内部绘制)而不是颜色(多边形边界线)

另外,一般规则是不要在
ggplot
调用中使用
dataframe$variable
。与上面提到的@mikeck和@marcelo一样,您希望指定所有美学,这些美学随
aes(…)
语句中的数据而变化,您只需在其中写入不带引号的列名:

ggplot(well_watershed_ok, aes(x=long, y=lat, fill=H2O_BBL_T) + 
  geom_polygon() + 
  scale_fill_gradientn(name = "Water BBL/Day", colors = c("#660000", "#f9f3c2"))
最后,您需要确保
well\u Waterline\u ok$H2O\u BBL\T
是一个数值向量。试试
str(好的)
。如果它说该列是一个因子,那么R将您的数据解释为类别,而不是连续变量。一个常见的原因是当您有一个带有
的数字列表来表示缺少的值时;R将把它理解为一个文本列表


将来,确保包含一个可复制的数据片段来诊断您的问题。

如果将
fill
规范放入
aes
调用中,是否有效?尝试
ggplot(well\u Waterline\u ok,aes(x=long,y=lat,fill=H2O\u BBL\u T)+geom\u polygon()
。您可能还需要指定
美学。不,我得到了相同的错误。指定组美学是什么意思?对不起,我对RIt来说应该是
geom\u polygon(data=well\u Waterline\u ok,aes)(x=long,y=lat,fill=well_-diversion_-ok$H2O_-BBL_-T))
因为您正在使用填充作为映射的一部分。>ggplot()+几何多边形(数据=well_-diversion_-ok,aes(x=long,y=lat,fill=well_-diversion_-ok$H2O_-BBL_-T))+实验室(x=“”,y=“”,title=“每天使用的桶数”)+比例颜色梯度(“水桶/天”,颜色=c(“;660000”;”f3c2)+为每个多边形定义的区域错误:美学必须为长度1或与数据相同(222074):x,y,fills请举例说明您的数据,例如
head(well\u Waterline\u ok)
str(well\u Waterline\u ok)
。如果不了解数据格式,很难判断问题出在哪里。感谢您的帮助,当我不使用dataframe$variable时,它就无法识别变量“>ggplot(好的,aes(x=long,y=lat,fill=H2O\u BBL\t))+geom\u polygon()+labs(x=“”,y=“”,title=“每天使用的水桶数”)+刻度填充梯度n(“水桶/天”,颜色=c(“#660000”,“#f9f3c2”)”)为评估中的每个多边形错误定义的区域(expr,envir,enclose):对象'H2O_BBL_T'未找到谢谢您的帮助,当我不使用dataframe$variable时,它将无法识别变量
>ggplot(well_Waterline_ok,aes(x=long,y=lat,fill=H2O_BBL_T))+geom_polygon()+labs(x=,y=,title=“每天使用的桶装水数量”)+比例填充梯度n(“水桶/天”,颜色=c(“#660000”,“#f9f3c2”)
为评估中的每个多边形错误定义的区域(expr、envir、enclose):找不到对象'H2O_BBL_T',我也做了str测试,变量是数字。听起来错误在代码上游的某个地方。您应该提供一个最小的可复制示例,请参阅:和