Gösterge (metin) etiketlerini ggplot'ta düzenleme


120

Dokümantasyona ve StackOverflow'a bakarak saatler harcadım, ancak sorunumu çözecek bir çözüm yok gibi görünüyor. Kullanırken ggplot, veri çerçevemde olmasına rağmen açıklamada doğru metni alamıyorum. Ben denedim scale_colour_manual, scale_fill_manualiçin farklı değerlere sahip labels=gibi c("T999", "T888")", "cols".

İşte kodum:

T999 <- runif(10, 100, 200)
T888 <- runif(10, 200, 300)
TY <- runif(10, 20, 30)
df <- data.frame(T999, T888, TY)


ggplot(data = df, aes(x=T999, y=TY, pointtype="T999")) + 
       geom_point(size = 15, colour = "darkblue") + 
       geom_point(data = df, aes(x=T888, y=TY), colour = 'red', size = 10 ) + 
       theme(axis.text.x = element_text(size = 20), axis.title.x =element_text(size = 20),   axis.text.y = element_text(size = 20)) +
       xlab("Txxx") + ylab("TY [°C]") + labs(title="temperatures", size = 15) + 
       scale_colour_manual(labels = c("T999", "T888"), values = c("darkblue", "red")) +    theme(legend.position="topright")

Yardım çok takdir edilecektir!


8
Göz at Bu eğitimde veri biçimi olduğunu öğrenmek için ggplot(uzun, değil genişliğinde) ile mutlu olur ve arasındaki farkın bir duygu almak için haritalama bir aesbir değişkene thetic aesvs, çağrı ayar dışarıda aes. meltVerilerinizi uzun bir formatta yapmanız ve ilgili değişkenle eşlemeniz colour(veya fill) aesgerekir.
Henrik

Yanıtlar:


146

@Henrik'in bahsettiği eğitim, paketle nasıl çizim yapılacağını öğrenmek için mükemmel bir kaynaktır ggplot2.

Verilerinizle bir örnek:

# transforming the data from wide to long
library(reshape2)
dfm <- melt(df, id = "TY")

# creating a scatterplot
ggplot(data = dfm, aes(x = TY, y = value, color = variable)) + 
  geom_point(size=5) +
  labs(title = "Temperatures\n", x = "TY [°C]", y = "Txxx", color = "Legend Title\n") +
  scale_color_manual(labels = c("T999", "T888"), values = c("blue", "red")) +
  theme_bw() +
  theme(axis.text.x = element_text(size = 14), axis.title.x = element_text(size = 16),
        axis.text.y = element_text(size = 14), axis.title.y = element_text(size = 16),
        plot.title = element_text(size = 20, face = "bold", color = "darkgreen"))

bu sonuç:

görüntü açıklamasını buraya girin

@ User2739472 tarafından yorumlarda belirtildiği gibi: ggplot'un varsayılan paletindeki renkleri değil, yalnızca gösterge metin etiketlerini değiştirmek istiyorsanız, scale_color_hue(labels = c("T999", "T888"))bunun yerine kullanabilirsiniz scale_color_manual().


@Sathish Gördüğünüz gibi, y ekseninin başlığı x eksenindeki başlıktan daha küçük. Olasılıkları ve sonuçlarını göstermek için farklı boyutlar kullanılır. Dolayısıyla cevapta kullanılan kod doğru imodur.
Jaap

@Sathish Önceki yorumuma ekleyerek: kesinlikle bu şekilde yapmak için bir seçenek! Her şey ne elde etmek istediğinize bağlı ;-)
Jaap

9
Ggplot'un varsayılan paletindeki renkleri değil, yalnızca gösterge metin etiketlerini değiştirmek istiyorsanız, scale_color_hue(labels = c("T999", "T888"))bunun yerinescale_color_manual()
user2739472

1
@ user2739472 Thx & doğru. Cevabıma ekleyeceğim.
Jaap

@Sathish ben :-) geç ısırdı ama şimdi yazım hatası sabit
Jaap

41

Efsane başlıkları belirli bir estetikle etiketlenebilir .

Bu kullanılarak elde edilebilir guides()ya da labs()işlevleri ggplot2(daha burada ve burada ). Estetik haritalamayı kullanarak kılavuz / açıklama özellikleri eklemenizi sağlar.

mtcarsVeri kümesini kullanan bir örnek ve labs():

ggplot(mtcars, aes(x=mpg, y=disp, size=hp, col=as.factor(cyl), shape=as.factor(gear))) +
  geom_point() +
  labs(x="miles per gallon", y="displacement", size="horsepower", 
       col="# of cylinders", shape="# of gears")

görüntü açıklamasını buraya girin

OP'nin sorusuna aşağıdakileri kullanarak cevap vermek guides():

# transforming the data from wide to long
require(reshape2)
dfm <- melt(df, id="TY")

# creating a scatterplot
ggplot(data = dfm, aes(x=TY, y=value, color=variable)) + 
  geom_point(size=5) +
  labs(title="Temperatures\n", x="TY [°C]", y="Txxx") +
  scale_color_manual(labels = c("T999", "T888"), values = c("blue", "red")) +
  theme_bw() +
  guides(color=guide_legend("my title"))  # add guide properties by aesthetic

görüntü açıklamasını buraya girin


Ben buna katılmıyorum. Sadece başlık belirlerken, bunu belirtmek daha kolaydır scale_ ..ya labsargümanlar.
Jaap

15 dakika önceki çözümünüz hakkında yorum yapıyordum ve başlığı da ekledim scale_color_manual(title="...", ...). Renk estetiğine referans vermek için onu değiştirmişsiniz labs(). Çözümümü alternatif olarak sunuyorum.
Megatron

Şu an itibariyle, bu, daha anlamsız olması için bir dolgu gradyanı ise göstergeyi değiştiriyor gibi görünüyor.
Max Candocia
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.