Datalink: используемые данные
Мой код:
ccfsisims <- read.csv(file = "F:/Purdue University/RA_Position/PhD_ResearchandDissert/PhD_Draft/GTAP-CGE/GTAP_NewAggDatabase/NewFiles/GTAP_ConsIndex.csv", header=TRUE, sep=",", na.string="NA", dec=".", strip.white=TRUE)
ccfsirsts <- as.data.frame(ccfsisims)
ccfsirsts[6:24] <- sapply(ccfsirsts[6:24],as.numeric)
ccfsirsts <- droplevels(ccfsirsts)
ccfsirsts <- transform(ccfsirsts,sres=factor(sres,levels=unique(sres)))
library(ggplot2)
#------------------------------------------------------------------------------------------
#### Plot of food security index for Morocco and Turkey by sector
#------------------------------------------------------------------------------------------
#_Code_Begin...
datamortur <- melt(ccfsirsts[ccfsirsts$region %in% c("TUR","MAR"), ]) # Selecting regions of interest
datamortur1 <- datamortur[datamortur$variable %in% c("pFSI2"), ] # Selecting the food security index of interest
datamortur2 <- datamortur1[datamortur1$sector %in% c("wht","gro","VegtFrut","osd","OthCrop","VegtOil","XPrFood"), ] # Selecting food sectors of interest
datamortur3 <- subset(datamortur2, tradlib !="BASEDATA") # Eliminating the "BASEDATA" scenario results
allfsi.f <- datamortur3
fsi.wht <- allfsi.f[allfsi.f$sector %in% c("wht"), ]
Figure29 <- ggplot(data=fsi.wht, aes(x=factor(sres),y=value,colour=factor(tradlib)))
Figure29 + geom_line(aes(group=factor(tradlib),size=2)) + facet_grid(regionsFull~., scales="free_y", labeller=reg_labeller) + scale_colour_brewer(type = "div") +
theme(axis.text.x = element_text(colour = 'black', angle = 90, size = 13, hjust = 0.5, vjust = 0.5),axis.title.x=element_blank()) +
ylab("FSI (%Change)") + theme(axis.text.y = element_text(colour = 'black', size = 12), axis.title.y = element_text(size = 12, hjust = 0.5, vjust = 0.2)) +
theme(strip.text.y = element_text(size = 11, hjust = 0.5, vjust = 0.5, face = 'bold'))
Мой результат:
Новый результат с aes (size = 2):
Мой вопрос: есть ли способ более точно контролировать ширину линии, чтобы избежать результата на втором графике? Я особенно нахожу это недружелюбным к документам, и тем более для целей публикации, включать график с новой определенной шириной линии.
лучше всего, Исмаил
Ответы:
Хотя у @Didzis есть правильный ответ , я остановлюсь на нескольких моментах.
Эстетика может быть установлена или отображена в вызове ggplot.
Эстетика, определенная в aes (...), отображается на основе данных и создается легенда.
Эстетику также можно присвоить единственному значению, определив его вне aes ().
Насколько я могу судить, вы хотите установить размер как одно значение, а не отображать в вызове
aes()
Когда вы вызываете,
aes(size = 2)
он создает переменную с именем`2`
и использует ее для создания размера, сопоставляя его с постоянным значением, как в вызове кaes
(таким образом, оно появляется в вашей легенде).Использование size = 1 (и без
reg_labeller
которого, возможно, определено где-то в вашем скрипте)и с размером = 2
Теперь вы можете определить размер, чтобы он соответствовал конечному размеру изображения и типу устройства.
источник
Ширина строки в
ggplot2
может быть изменена с помощью аргументаsize=
вgeom_line()
.источник
aes
. См. Мой ответ (илиggplot2
объяснение в книге.size=1
, возможно0.5
, поэтому,size=1
на мой взгляд , использование дает неплохие результаты. Можно также использовать десятичные числа для точной настройки ширины (скажемsize=1.2
).Ширина строки в
ggplot2
может быть изменена с помощью аргументаlwd=
вgeom_line()
.источник
Если вы хотите гибко изменять ширину линии, вы можете использовать «scale_size_manual», это та же процедура для выбора цвета, заливки, альфа-канала и т. Д.
источник
Также похоже, что если вы просто поместите
size
аргумент вgeom_line()
часть, но безaes()
него, он будет соответствующим образом масштабироваться. По крайней мере, так работает,geom_density
и у меня была такая же проблема.источник