Пузырьковый график отрицательных и положительных значений в пространстве ggplot2 R

Я хотел бы создать пузырьковый график, используя ggplot2 в R. Мой код и данные находятся ниже. Пожалуйста, оставьте цвета как есть. У меня возникают трудности с одинаковым масштабированием положительных и отрицательных значений. Например, -3 масштабируется меньше +3. Я бы хотел, чтобы негативы и позитивы масштабировались пропорционально, независимо от знака.

Отличайте отрицательные значения от положительных, используя какой-либо тип контурной линии для пузырьков, и включите его в легенду.

Также удалите часть легенды со словом «Среднее».

Большое спасибо за вашу огромную помощь.

#=====================================================================

library(ggplot2) 
if (dev.cur() == 1) x11(width=8,height=6) 
par(mfcol=c(1,1)) 
p<-ggplot(site.resiudal, aes(x=Eastings, y=Northings, size=Mean,label=site.resiudal$Site,legend = FALSE))+ 
#theme(legend.position="none")+
geom_point(shape=21)+ 
geom_point(aes(colour = factor(Region)))+ 
scale_area(range=c(1,15))+ 
scale_alpha(guide = 'none')+
scale_x_continuous(name="Longitude", limits=c(-120,-95))+ 
scale_y_continuous(name="Latitude", limits=c(48,61))+ 
geom_text(size=4)+
scale_colour_manual(name="Region",labels = c("A", "B","C","D", "E"),values = c("1" =   "firebrick3","2" = "palegreen4","3" = "sandybrown","4" = "red","5" = "gray0"))+
theme(legend.title = element_text(colour="black", size=16, face="plain"))+
theme(legend.text = element_text(colour="black", size = 16, face = "plain"))

p

#Data[["sign"]] = ifelse(Data[["Mean"]] >= 0, "positive", "negative")

#=================================================

structure(list(Site = structure(c(101L, 102L, 105L, 107L, 108L, 
110L, 111L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 
13L, 14L, 16L, 20L, 47L, 52L, 53L, 55L, 91L, 92L, 93L, 94L, 95L, 
96L, 99L, 15L, 17L, 18L, 19L, 21L, 114L, 23L, 26L, 36L, 59L, 
60L, 61L, 62L, 63L, 64L, 65L, 66L, 67L, 68L, 69L, 70L, 71L, 72L, 
73L, 74L, 75L, 76L, 77L, 78L, 79L, 80L, 81L, 82L, 83L, 84L, 85L, 
86L, 87L, 88L, 89L, 98L, 100L, 103L, 104L, 106L, 109L, 112L, 
113L, 115L, 116L, 117L, 119L, 42L, 44L, 46L, 48L, 49L, 50L, 51L, 
54L, 56L, 57L, 58L, 90L, 97L, 118L, 120L, 22L, 24L, 25L, 27L, 
28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 37L, 38L, 39L, 40L, 41L, 
43L, 45L), .Label = c("G100", "G101", "G102", "G103", "G104", 
"G105", "G106", "G107", "G108", "G109", "G110", "G111", "G112", 
"G113", "G114", "G115", "G116", "G117", "G118", "G119", "G120", 
"GG10", "GG11", "GG12", "GG13", "GG14", "GG15", "GG16", "GG17", 
"GG18", "GG19", "GG20", "GG21", "GG22", "GG23", "GG24", "GG25", 
"GG26", "GG27", "GG28", "GG29", "GG30", "GG31", "GG32", "GG33", 
"GG34", "GG35", "GG36", "GG37", "GG38", "GG39", "GG40", "GG41", 
"GG42", "GG43", "GG44", "GG45", "GG46", "GG47", "GG48", "GG49", 
"GG50", "GG51", "GG52", "GG53", "GG54", "GG55", "GG56", "GG57", 
"GG58", "GG59", "GG60", "GG61", "GG62", "GG63", "GG64", "GG65", 
"GG66", "GG67", "GG68", "GG69", "GG70", "GG71", "GG72", "GG73", 
"GG74", "GG75", "GG76", "GG77", "GG78", "GG79", "GG80", "GG81", 
"GG82", "GG83", "GG84", "GG85", "GG86", "GG87", "GG88", "GG89", 
"GG90", "GG91", "GG92", "GG93", "GG94", "GG95", "GG96", "GG97", 
"GG98", "GG99", "GGG1", "GGG2", "GGG3", "GGG4", "GGG5", "GGG6", 
"GGG7", "GGG8", "GGG9"), class = "factor"), Name = structure(c(53L, 
87L, 29L, 92L, 36L, 76L, 102L, 103L, 119L, 2L, 9L, 11L, 45L, 
47L, 49L, 54L, 90L, 30L, 105L, 66L, 78L, 107L, 81L, 42L, 41L, 
43L, 59L, 110L, 24L, 27L, 56L, 61L, 64L, 118L, 40L, 21L, 44L, 
70L, 108L, 25L, 58L, 98L, 83L, 5L, 19L, 26L, 31L, 38L, 55L, 60L, 
71L, 74L, 75L, 85L, 95L, 120L, 109L, 1L, 67L, 20L, 50L, 63L, 
106L, 111L, 116L, 62L, 6L, 99L, 114L, 73L, 84L, 89L, 93L, 97L, 
115L, 80L, 10L, 12L, 88L, 79L, 15L, 17L, 33L, 35L, 94L, 100L, 
3L, 16L, 37L, 101L, 117L, 8L, 39L, 48L, 86L, 113L, 23L, 13L, 
69L, 96L, 104L, 32L, 65L, 82L, 14L, 22L, 18L, 46L, 68L, 72L, 
77L, 91L, 112L, 4L, 7L, 28L, 51L, 57L, 52L, 34L), .Label = c("ANEROID", 
"ARBORG", "ATHABASCA", "BANFF", "BANGOR", "BATTLEFORD", "BEAVER MINES", 
"BEAVERLODGE", "BERENS RIVER", "BIRTLE", "BISSETT", "BRANDON", 
"BUFFALO NARROWS", "CALGARY", "CALMAR", "CAMPSIE", "CAMROSE", 
"CARWAY", "CEYLON", "CHAPLIN", "CHURCHILL", "CLARESHOLM", "COLD LAKE", 
"COLLINS BAY", "CORONATION", "COTE", "CREE LAKE", "CROWSNEST", 
"CYPRESS RIVER", "DAUPHIN", "DAVIDSON", "DRUMHELLER", "EDMONTON", 
"EDSON", "ELK POINT", "EMERSON AUT", "ENILDA-BERG", "ESTEVAN", 
"FAIRVIEW", "FLIN FLON", "FORT CHIPEWYAN", "FORT MCMURRAY", "FORT VERMILION", 
"GILLAM", "GIMLI", "GLEICHEN", "GRAND RAPIDS", "GRANDE PRAIRIE", 
"GREAT FALLS", "HIGH POINT", "HIGHWOOD", "HINTON VALLEY", "HUDSON BAY", 
"INDIAN BAY", "INDIAN HEAD", "ISLAND FALLS", "JASPER WARDEN", 
"JENNER", "KEG RIVER RS", "KELLIHER", "KEY LAKE", "KINDERSLEY", 
"KLINTONEL", "LA RONGE", "LACOMBE 2", "LANGRUTH WEST", "LEADER", 
"LETHBRIDGE", "LOON LAKE", "LYNN LAKE", "MANOR", "MEDICINE HAT", 
"MELFORT", "MOOSE JAW", "MOOSOMIN", "MORDEN", "MOUNTAIN VIEW", 
"NEEPAWA MURRAY", "NINETTE", "NIPAWIN", "NORWAY HOUSE", "OLDS", 
"ONEFOUR", "OUTLOOK", "PASWEGIN", "PEACE RIVER", "PELLY", "PIERSON", 
"PILGER", "PINAWA WNRE", "PINCHER CREEK ", "PORTAGE PRAIRIE", 
"PRINCE ALBERT", "RANFURLY", "REGINA", "ROCKY MT HOUSE ", "SASKATOON", 
"SCOTFIELD", "SCOTT", "SION", "SLAVE LAKE", "SPRAGUE", "STEINBACH", 
"STETTLER NORTH", "SWAN RIVER", "SWIFT CURRENT", "THE PAS", "THOMPSON", 
"TONKIN", "URANIUM CITY ", "VAL-MARIE", "VAUXHALL", "WABASCA RS", 
"WASECA", "WASKESIU LAKE", "WEST POPLAR", "WHITECOURT", "WHITESAND DAM", 
"WINNIPEG", "YELLOW GRASS"), class = "factor"), Mean = c(-0.020525899, 
0.333863493, 0.210353772, NA, NA, 0.093520458, 0.341295298, NA, 
-0.175074657, 0.09834825, 0.075610648, NA, -0.117503802, 0.18309367, 
0.25246942, 0.221329766, 0.072167004, -0.094766032, NA, NA, 0.19783711, 
-0.166351357, -0.0996169, -0.038555432, -0.028092042, 0.297855371, 
0.108263891, 0.002057761, 0.327731415, NA, 0.180100638, 0.193837736, 
-0.003306948, 0.178881894, 0.3655509, -0.235975798, -0.176154056, 
-0.080433735, -0.110955273, -0.228010105, 0.048103255, -0.116681527, 
-0.073042421, NA, NA, 0.035356012, 0.297171565, -0.197834719, 
0.036412958, 0.055218077, NA, -0.236229087, 0.265211081, 0.271625885, 
-0.293179359, 0.113744571, -0.207770026, 0.100471248, -0.071569464, 
NA, NA, NA, -0.052716493, 0.057385851, 0.090340517, -0.30456625, 
-0.234420722, 0.082287977, 0.009973663, NA, -0.06405062, 0.074703356, 
-0.208329196, -0.272401078, 0.217991554, -0.043619919, -0.208901155, 
-0.020022401, 0.111495318, NA, 0.38239749, 0.199136959, -0.177740258, 
NA, 0.147515615, 0.309306538, 0.298741467, 0.068170296, NA, -0.02102765, 
0.001754313, -0.010196512, 0.108254156, -0.228183063, -0.196261239, 
NA, -0.167054722, 0.039949534, 0.154337034, -0.020855461, 0.136010278, 
NA, 0.096997744, NA, -0.241963754, 0.660176529, 0.423554314, 
0.190305726, -0.210778787, -0.261148915, NA, 0.054264129, -0.098706619, 
-0.138776994, NA, NA, NA, -0.113823745, 0.373292721, -0.047060083 
), Eastings = c(-102.5800018, -101.8700027, -99.08000183, -98.26999664, 
-97.23000336, -98.08000183, -95.59999847, -96.76999664, -97.23000336, 
-97.08000183, -97.02999878, -95.69999695, -97.01999664, -99.27999878, 
-96, -95.19999695, -96.06999969, -100.0500031, -101.2300034, 
-98.80000305, -99.56999969, -101.0999985, -97.84999847, -111.2200012, 
-111.1200027, -116.0299988, -117.6200027, -108.4800034, -103.6999969, 
-107.1299973, -102.3499985, -105.6200027, -105.2699966, -103.1500015, 
-101.8799973, -94.06999969, -94.72000122, -101.0800018, -97.87000275, 
-111.4499969, -111.1999969, -111.3499985, -110.4700012, -102.2799988, 
-104.6500015, -101.7799988, -105.9800034, -102.9700012, -103.6500015, 
-103.75, -102.0999985, -105.5500031, -101.6699982, -103.9199982, 
-104.6699982, -104.1800003, -102.2300034, -107.3000031, -109.5, 
-106.6500015, -107.9300003, -108.9199982, -107.7300034, -107.8499985, 
-106.3799973, -109.1800003, -108.25, -108.8300018, -109.4000015, 
-104.5999985, -107.0500031, -105.1500015, -105.6699982, -106.7200012, 
-106.0699997, -104, -101.0500031, -99.94999695, -101.2699966, 
-99.65000153, -113.8499985, -112.8199997, -113.5800018, -111.0699997, 
-111.7300034, -114.1200027, -113.2799988, -114.6800003, -116.3000031, 
-114.7799988, -115.7799988, -119.4000015, -118.5299988, -118.8799973, 
-117.4499969, -113.8300018, -110.2799988, -108.4300003, -109.0999985, 
-114.9199982, -112.7200012, -112.8700027, -113.75, -114.0999985, 
-114.0199966, -113.7300034, -113.3799973, -113.0500031, -112.8000031, 
-110.7200012, -113.6299973, -113.9800034, -112.1299973, -115.5500031, 
-114.1800003, -114.4800034, -114.3700027, -118.0299988, -117.5299988, 
-116.4499969), Northings = c(52.88000107, 52.08000183, 49.54999924, 
49.95000076, 49, 49.18000031, 49.02000046, 49.52999878, 49.91999817, 
50.93000031, 52.34999847, 51.02999878, 50.63000107, 53.15000153, 
50.47000122, 49.61999893, 50.18000031, 51.09999847, 52.11999893, 
50.41999817, 50.15000153, 53.97000122, 53.97000122, 56.65000153, 
58.77000046, 58.38000107, 57.75, 59.56999969, 58.18000031, 57.34999847, 
55.52999878, 57.25, 55.15000153, 56.22999954, 54.77000046, 58.72999954, 
56.34999847, 56.86999893, 55.79999924, 52.06999969, 50.72000122, 
51.58000183, 49.11999893, 50.90000153, 49.38000107, 51.52000046, 
51.27000046, 49.22000122, 50.54999924, 51.25, 49.61999893, 50.33000183, 
50.13000107, 51.97999954, 50.43000031, 49.81999969, 51.20000076, 
49.72000122, 50.90000153, 50.47000122, 50.97999954, 49.68000031, 
50.27000046, 49.36999893, 49, 51.52000046, 52.77000046, 52.36999893, 
53.13000107, 52.81999969, 51.47999954, 52.41999817, 53.22000122, 
52.16999817, 53.91999817, 53.33000183, 50.43000031, 49.91999817, 
49.18000031, 49.41999817, 53.27999878, 53.02999878, 53.31999969, 
53.88000107, 53.41999817, 53.88000107, 54.72000122, 54.13000107, 
55.41999817, 55.27999878, 54.15000153, 55.20000076, 56.08000183, 
55.18000031, 56.22999954, 55.97000122, 54.41999817, 55.83000183, 
54.04999924, 52.41999817, 52.33000183, 51.47000122, 52.45000076, 
51.77999878, 51.11999893, 49.93000031, 49, 50.88000107, 49.63000107, 
50.02000046, 49.13000107, 49.52000046, 50.04999924, 51.20000076, 
49.47000122, 49.63000107, 50.54999924, 52.93000031, 53.40000153, 
53.58000183), Region = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L)), .Names = c("Site", 
"Name", "Mean", "Eastings", "Northings", "Region"), class = "data.frame", row.names =      c(NA, 
-120L))


#============================================

person code123    schedule 21.05.2014    source источник


Ответы (1)


используйте 1_

например, вместо size=Mean используйте size=abs(Mean)

Затем вы можете отслеживать знак по форме (или другой эстетике, но цвет и размер уже взяты).

заменять:

 geom_point(shape=21)+ 
 geom_point(aes(colour = factor(Region))) + 

с единственной линией

geom_point(aes(shape=factor(sign(Mean)), colour = factor(Region))) + 

При желании вы также можете добавить такие строки, как

    scale_shape_discrete(name="Mean Is", breaks=c(-1, 1), labels=c("Negative", "Positive"))

    guides(size=FALSE)
person Ricardo Saporta    schedule 21.05.2014