كيفية تسمية النقاط على مخطط التشتت باستخدام R؟

StackOverflow https://stackoverflow.com/questions/9500066

  •  14-11-2019
  •  | 
  •  

سؤال

أنا جديد على لغة R وأرغب في معرفة كيفية تسمية نقاط البيانات على مخطط التشتت.لقد جربت الكود التالي ولكنني أتلقى خطأ.

x = c(102856,17906,89697,74384,91081,52457,73749,29910,75604,28267,122136,
      54210,48925,58937,76281,67789,69138,18026,90806,44893)
y = c(2818, 234, 2728, 2393, 2893, 1015, 1403, 791, 2243, 596, 2468, 1495,
      1232, 1746, 2410, 1791, 1706, 259, 1982, 836)

plot(x, y, main="Scatterplot ", xlab="xaxis ", ylab="yaxis ", pch=19)

names = c("A","C","E","D","G","F","I","H","K","M","L","N","Q","P","S","R",
          "T","W","V","Y")

library(calibrate)
textxy(x, y, labs=names, cx = 0.5, dcol = "black", m = c(0, 0))

Error in text.default(X[posXposY], Y[posXposY], labs[posXposY], adj = c(-0.3,  :
plot.new has not been called yet

لا أفهم هذا الخطأ.الرجاء مساعدتي

هل كانت مفيدة؟

المحلول

يمكنك أن تفعل ذلك في ggplot2:

require(ggplot2)
d <- data.frame(x = c(102856,17906,89697,74384,91081,52457,73749,29910,75604,28267,122136, 54210,48925,58937,76281,67789,69138,18026,90806,44893), y = c(2818, 234, 2728, 2393, 2893, 1015, 1403, 791, 2243, 596, 2468, 1495, 1232, 1746, 2410, 1791, 1706, 259, 1982, 836), names = c("A","C","E","D","G","F","I","H","K","M","L","N","Q","P","S","R","T","W","V","Y"))
ggplot(d, aes(x,y)) + geom_point() + geom_text(aes(label=names))

قد ترغب في ألا تكون التسميات النصية أعلى النقاط مباشرة، وهو ما يمكنك تحقيقه باستخدام hjust أو vjust الحجج في geom_text جزء.

نصائح أخرى

يمكنك إنشاء هذا بسهولة باستخدام text() وظيفة.

text(x,y,labels=names)

الكود يعمل معي:

> sessionInfo()
R version 2.14.2 Patched (2012-02-29 r58525)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_GB.utf8       LC_NUMERIC=C             
 [3] LC_TIME=en_GB.utf8        LC_COLLATE=en_GB.utf8    
 [5] LC_MONETARY=en_GB.utf8    LC_MESSAGES=en_GB.utf8   
 [7] LC_PAPER=C                LC_NAME=C                
 [9] LC_ADDRESS=C              LC_TELEPHONE=C           
[11] LC_MEASUREMENT=en_GB.utf8 LC_IDENTIFICATION=C      

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods  
[7] base     

other attached packages:
[1] calibrate_1.7 mgcv_1.7-13  

loaded via a namespace (and not attached):
[1] grid_2.14.2    lattice_0.20-0 Matrix_1.0-4   nlme_3.1-103  
[5] tools_2.14.2

تحقق من أن لديك ما يصل إلى تاريخ R و نسخة من معايرة وإذا لم يكن التحديث لهم وحاول مرة أخرى.

سيكون أكثر طبيعية استخدام ما يلي ترتيب المكالمات الخاصة بك:

> library(calibrate)
> names = c("A","C","E","D","G","F","I","H","K","M","L","N","Q","P","S","R",
+           "T","W","V","Y")
> plot(x, y, main="Scatterplot ", xlab="xaxis ", ylab="yaxis ", pch=19)
> textxy(x, y, labs=names, cx = 0.5, dcol = "black", m = c(0, 0))

يجب أن لا تجعل أي فرق إذا كان مؤامرة النافذة التي تنتجها plot() الدعوة لا تزال مفتوحة.

لا تحتاج إلى حزمة المعايرة.يمكنك القيام به:

النص (x، y-50، الأسماء)

يعمل بالنسبة لي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top