在散点图中标记特定点

发布于 2025-02-12 09:49:34 字数 10751 浏览 1 评论 0原文

我有一个散点图,显示房屋的大小如何影响价格。地块中的红色三角形是最近建造的房屋中的5%。 代码:

y <- new_baltimore$AGE
quantile(y, 0.05)      # the result is 4
k <- subset(new_baltimore, y<=4)
kk <- k$SQFT
price <- k$PRICE
age <- k$AGE
col = ifelse(new_baltimore$SQFT %in% kk, "red", "green")
pch = ifelse(new_baltimore$SQFT %in% kk, 25, 20)
plot(new_baltimore$SQFT, new_baltimore$PRICE, col=col, pch=pch, xlab="SQFT", ylab="PRICE")

我只想将红色三角点(最近建造的房屋)标记为各自的年龄。

我尝试了

1。

   text(new_baltimore$SQFT[kk], new_baltimore$PRICE[price], age, cex=0.4)
with(new_baltimore$SQFT %in% kk, text(new_baltimore$SQFT,new_baltimore$PRICE, labels = age))

我想发布一些图片,但不幸的是我是新成员。我可以想象ggplot2的Geom_Text可以使用,但是我需要在基本R中进行此操作。有什么帮助吗?

数据:

doob_struct <-
  structure(
    list(
      new_baltimore.SQFT = c(
        1.0451592,
        2.6867559168,
        2.8446910848,
        2.4266274048,
        2.0475830016,
        3.6622378368,
        2.0327185152,
        2.378317824,
        4.0988821248,
        1.8469124352,
        1.1222687232,
        1.0210044096,
        1.189158912,
        2.7675815616,
        1.328513472,
        1.2746297088,
        1.0999719936,
        1.6778289024,
        0.9959205888,
        0.8324112384,
        1.3359457152,
        3.41418672,
        1.8580608,
        2.1200473728,
        2.3095695744,
        1.783738368,
        1.0758172032,
        2.41547904,
        1.337803776,
        1.0795333248,
        2.1442021632,
        2.2073762304,
        1.449287424,
        0.9290304,
        2.118189312,
        1.5570549504,
        2.053157184,
        1.3266554112,
        1.4269906944,
        1.48644864,
        2.1404860416,
        2.3170018176,
        1.0981139328,
        1.1965911552,
        1.040514048,
        1.6834030848,
        3.55354128,
        1.6425257472,
        1.7670158208,
        3.047219712,
        1.4084100864,
        2.041544304,
        1.170578304,
        2.1850795008,
        1.6276612608,
        4.4231137344,
        1.909157472,
        3.2999159808,
        0.780385536,
        1.2709135872,
        1.3452360192,
        1.189158912,
        1.189158912,
        1.67225472,
        1.430706816,
        0.9364626432,
        0.8324112384,
        0.8324112384,
        1.8580608,
        1.1965911552,
        1.11483648,
        1.6871192064,
        1.3266554112,
        2.41547904,
        1.1166945408,
        1.932383232,
        1.0943978112,
        0.8063983872,
        1.635093504,
        1.059094656,
        4.138830432,
        4.3032688128,
        0.9513271296,
        0.891869184,
        2.898574848,
        2.452640256,
        1.263481344,
        2.5529755392,
        1.6592482944,
        1.6759708416,
        1.3786811136,
        0.9717657984,
        1.3526682624,
        0.6466051584,
        0.88257888,
        1.1018300544,
        1.1965911552,
        1.1445654528,
        0.6243084288,
        0.9364626432,
        1.449287424,
        0.6243084288,
        1.0702430208,
        1.0925397504,
        0.9513271296,
        1.0702430208,
        0.8621402112,
        0.6243084288,
        1.449287424,
        1.43999712,
        0.9141659136,
        1.449287424,
        1.2783458304,
        0.9513271296,
        0.5351215104,
        0.9364626432,
        1.0702430208,
        1.128771936,
        0.9076627008,
        1.3935456,
        1.337803776,
        1.34709408,
        2.0940345216,
        0.9513271296,
        0.724643712,
        0.780385536,
        1.0145011968,
        3.985540416,
        0.83612736,
        0.97548192,
        0.9364626432,
        1.170578304,
        0.8324112384,
        0.7971080832,
        0.7023469824,
        1.003352832,
        1.2486168576,
        0.9513271296,
        1.3415198976,
        1.1371332096,
        1.226320128,
        0.891869184,
        1.4139842688,
        2.2445374464,
        0.9513271296,
        0.9513271296,
        0.9178820352,
        2.155350528,
        1.6425257472,
        2.257543872,
        3.3389352576,
        2.006705664,
        1.0237915008,
        1.95096384,
        2.2222407168,
        1.337803776,
        2.60128512,
        1.0628107776,
        2.0382926976,
        0.9513271296,
        1.5663452544,
        0.9215981568,
        1.2486168576,
        1.11483648,
        1.3712488704,
        0.8324112384,
        1.0702430208,
        0.8026822656,
        0.7543726848,
        1.0330818048,
        1.0479462912,
        0.9624754944,
        1.0702430208,
        1.588641984,
        1.6276612608,
        0.9968496192,
        1.040514048,
        1.189158912,
        1.11483648,
        3.8155278528,
        1.189158912,
        2.0773119744,
        0.9810561024,
        1.2486168576,
        1.0237915008,
        1.6703966592,
        1.7540093952,
        1.0925397504,
        0.8695724544,
        1.0702430208,
        2.536252992,
        2.1404860416,
        1.6425257472,
        1.2411846144,
        1.077675264,
        1.0702430208,
        0.9271723392,
        1.2040233984,
        1.0340108352,
        1.820899584,
        1.0702430208,
        1.1297009664,
        0,
        0.9884883456
      ),
      new_baltimore.PRICE = c(
        47,
        113,
        165,
        104.3,
        62.5,
        70,
        127.5,
        64.5,
        145,
        63.5,
        58.9,
        65,
        48,
        3.5,
        12.8,
        17.5,
        36,
        41.9,
        53.5,
        24.5,
        24.5,
        55.5,
        60,
        51,
        46,
        46,
        44,
        54.9,
        42.5,
        44,
        44.9,
        37.9,
        33,
        43.9,
        49.6,
        52,
        37.5,
        50,
        35.9,
        42.9,
        107,
        112,
        44.9,
        55,
        102,
        35.5,
        62.9,
        39,
        110,
        8,
        62,
        85.9,
        57,
        110,
        67.7,
        89.5,
        70,
        74,
        13,
        48,
        24,
        53.5,
        34.5,
        53,
        87.5,
        33.5,
        24,
        9.6,
        30,
        41,
        30,
        38.9,
        20.7,
        49.9,
        18.6,
        39,
        34,
        16,
        18.9,
        15.2,
        41.5,
        53,
        22,
        24.9,
        6.7,
        32.5,
        30,
        59,
        29.5,
        26,
        16.5,
        39,
        48.9,
        33.5,
        46,
        54,
        57.9,
        37.9,
        32,
        31,
        34,
        29,
        32.5,
        51.9,
        31,
        41.8,
        48,
        28,
        35,
        46.5,
        51.9,
        35.4,
        16,
        35,
        35,
        36.5,
        35.9,
        45,
        40,
        35,
        38,
        37,
        23,
        25.5,
        39.5,
        21.5,
        9,
        67.5,
        13.4,
        12.5,
        28.5,
        23,
        33.5,
        9,
        11,
        30.9,
        31.65,
        33,
        33.4,
        47,
        40,
        46,
        45.5,
        57,
        29.9,
        30,
        34,
        51,
        64.5,
        57.5,
        85.5,
        61,
        38,
        56.5,
        60.4,
        51.5,
        54,
        69,
        56,
        27.9,
        37.5,
        32.9,
        22,
        29.9,
        39.9,
        32.6,
        38.5,
        21.5,
        25.9,
        27.5,
        22.9,
        31.5,
        8.5,
        5.5,
        33,
        57,
        47,
        43.5,
        43.9,
        68.5,
        44.25,
        61,
        40,
        44.5,
        57,
        35,
        35.1,
        64.5,
        40,
        42.6,
        50,
        58,
        58,
        55,
        43,
        54,
        39,
        45,
        42,
        38.9,
        43.215,
        26.5,
        30,
        29.5
      ),
      new_baltimore.AGE = c(
        148L,
        9L,
        23L,
        5L,
        19L,
        20L,
        20L,
        22L,
        4L,
        23L,
        20L,
        30L,
        18L,
        75L,
        60L,
        65L,
        14L,
        45L,
        14L,
        22L,
        35L,
        5L,
        60L,
        14L,
        19L,
        11L,
        16L,
        19L,
        17L,
        24L,
        22L,
        27L,
        3L,
        21L,
        20L,
        4L,
        40L,
        23L,
        35L,
        25L,
        17L,
        26L,
        15L,
        29L,
        24L,
        30L,
        19L,
        50L,
        18L,
        74L,
        22L,
        24L,
        20L,
        7L,
        47L,
        50L,
        45L,
        48L,
        50L,
        48L,
        55L,
        27L,
        20L,
        33L,
        40L,
        25L,
        25L,
        40L,
        30L,
        40L,
        22L,
        25L,
        29L,
        49L,
        35L,
        55L,
        30L,
        15L,
        40L,
        35L,
        70L,
        25L,
        25L,
        30L,
        30L,
        50L,
        25L,
        70L,
        55L,
        40L,
        70L,
        20L,
        20L,
        25L,
        18L,
        20L,
        2L,
        8L,
        25L,
        18L,
        30L,
        35L,
        21L,
        20L,
        24L,
        13L,
        25L,
        18L,
        30L,
        20L,
        22L,
        28L,
        50L,
        20L,
        38L,
        17L,
        22L,
        27L,
        25L,
        25L,
        25L,
        30L,
        60L,
        22L,
        30L,
        28L,
        45L,
        100L,
        60L,
        50L,
        35L,
        50L,
        24L,
        50L,
        33L,
        40L,
        50L,
        25L,
        48L,
        10L,
        45L,
        20L,
        25L,
        25L,
        22L,
        21L,
        29L,
        18L,
        2L,
        19L,
        49L,
        10L,
        25L,
        16L,
        17L,
        27L,
        34L,
        2L,
        24L,
        23L,
        40L,
        25L,
        45L,
        26L,
        37L,
        15L,
        22L,
        75L,
        28L,
        31L,
        100L,
        15L,
        80L,
        75L,
        23L,
        15L,
        21L,
        2L,
        25L,
        23L,
        0L,
        4L,
        40L,
        55L,
        21L,
        45L,
        50L,
        5L,
        50L,
        22L,
        22L,
        6L,
        18L,
        18L,
        23L,
        3L,
        1L,
        47L,
        21L,
        29L,
        0L,
        29L,
        24L,
        22L
      )
    ),
    class = "data.frame",
    row.names = c(NA,-204L)
  )

I have a scatterplot that shows how the size of a house affects the price. The red triangles in the plot are the 5% of the most recently built houses.
Code:

y <- new_baltimore$AGE
quantile(y, 0.05)      # the result is 4
k <- subset(new_baltimore, y<=4)
kk <- k$SQFT
price <- k$PRICE
age <- k$AGE
col = ifelse(new_baltimore$SQFT %in% kk, "red", "green")
pch = ifelse(new_baltimore$SQFT %in% kk, 25, 20)
plot(new_baltimore$SQFT, new_baltimore$PRICE, col=col, pch=pch, xlab="SQFT", ylab="PRICE")

I want to label only the red triangle points (most recently built houses) with their respective ages.

I have tried

1.

   text(new_baltimore$SQFT[kk], new_baltimore$PRICE[price], age, cex=0.4)
with(new_baltimore$SQFT %in% kk, text(new_baltimore$SQFT,new_baltimore$PRICE, labels = age))

I would like to post some pictures but unfortunately I'm a new member. I can imagine geom_text from ggplot2 would work, but I need to do this with base R. Any help?

Data:

doob_struct <-
  structure(
    list(
      new_baltimore.SQFT = c(
        1.0451592,
        2.6867559168,
        2.8446910848,
        2.4266274048,
        2.0475830016,
        3.6622378368,
        2.0327185152,
        2.378317824,
        4.0988821248,
        1.8469124352,
        1.1222687232,
        1.0210044096,
        1.189158912,
        2.7675815616,
        1.328513472,
        1.2746297088,
        1.0999719936,
        1.6778289024,
        0.9959205888,
        0.8324112384,
        1.3359457152,
        3.41418672,
        1.8580608,
        2.1200473728,
        2.3095695744,
        1.783738368,
        1.0758172032,
        2.41547904,
        1.337803776,
        1.0795333248,
        2.1442021632,
        2.2073762304,
        1.449287424,
        0.9290304,
        2.118189312,
        1.5570549504,
        2.053157184,
        1.3266554112,
        1.4269906944,
        1.48644864,
        2.1404860416,
        2.3170018176,
        1.0981139328,
        1.1965911552,
        1.040514048,
        1.6834030848,
        3.55354128,
        1.6425257472,
        1.7670158208,
        3.047219712,
        1.4084100864,
        2.041544304,
        1.170578304,
        2.1850795008,
        1.6276612608,
        4.4231137344,
        1.909157472,
        3.2999159808,
        0.780385536,
        1.2709135872,
        1.3452360192,
        1.189158912,
        1.189158912,
        1.67225472,
        1.430706816,
        0.9364626432,
        0.8324112384,
        0.8324112384,
        1.8580608,
        1.1965911552,
        1.11483648,
        1.6871192064,
        1.3266554112,
        2.41547904,
        1.1166945408,
        1.932383232,
        1.0943978112,
        0.8063983872,
        1.635093504,
        1.059094656,
        4.138830432,
        4.3032688128,
        0.9513271296,
        0.891869184,
        2.898574848,
        2.452640256,
        1.263481344,
        2.5529755392,
        1.6592482944,
        1.6759708416,
        1.3786811136,
        0.9717657984,
        1.3526682624,
        0.6466051584,
        0.88257888,
        1.1018300544,
        1.1965911552,
        1.1445654528,
        0.6243084288,
        0.9364626432,
        1.449287424,
        0.6243084288,
        1.0702430208,
        1.0925397504,
        0.9513271296,
        1.0702430208,
        0.8621402112,
        0.6243084288,
        1.449287424,
        1.43999712,
        0.9141659136,
        1.449287424,
        1.2783458304,
        0.9513271296,
        0.5351215104,
        0.9364626432,
        1.0702430208,
        1.128771936,
        0.9076627008,
        1.3935456,
        1.337803776,
        1.34709408,
        2.0940345216,
        0.9513271296,
        0.724643712,
        0.780385536,
        1.0145011968,
        3.985540416,
        0.83612736,
        0.97548192,
        0.9364626432,
        1.170578304,
        0.8324112384,
        0.7971080832,
        0.7023469824,
        1.003352832,
        1.2486168576,
        0.9513271296,
        1.3415198976,
        1.1371332096,
        1.226320128,
        0.891869184,
        1.4139842688,
        2.2445374464,
        0.9513271296,
        0.9513271296,
        0.9178820352,
        2.155350528,
        1.6425257472,
        2.257543872,
        3.3389352576,
        2.006705664,
        1.0237915008,
        1.95096384,
        2.2222407168,
        1.337803776,
        2.60128512,
        1.0628107776,
        2.0382926976,
        0.9513271296,
        1.5663452544,
        0.9215981568,
        1.2486168576,
        1.11483648,
        1.3712488704,
        0.8324112384,
        1.0702430208,
        0.8026822656,
        0.7543726848,
        1.0330818048,
        1.0479462912,
        0.9624754944,
        1.0702430208,
        1.588641984,
        1.6276612608,
        0.9968496192,
        1.040514048,
        1.189158912,
        1.11483648,
        3.8155278528,
        1.189158912,
        2.0773119744,
        0.9810561024,
        1.2486168576,
        1.0237915008,
        1.6703966592,
        1.7540093952,
        1.0925397504,
        0.8695724544,
        1.0702430208,
        2.536252992,
        2.1404860416,
        1.6425257472,
        1.2411846144,
        1.077675264,
        1.0702430208,
        0.9271723392,
        1.2040233984,
        1.0340108352,
        1.820899584,
        1.0702430208,
        1.1297009664,
        0,
        0.9884883456
      ),
      new_baltimore.PRICE = c(
        47,
        113,
        165,
        104.3,
        62.5,
        70,
        127.5,
        64.5,
        145,
        63.5,
        58.9,
        65,
        48,
        3.5,
        12.8,
        17.5,
        36,
        41.9,
        53.5,
        24.5,
        24.5,
        55.5,
        60,
        51,
        46,
        46,
        44,
        54.9,
        42.5,
        44,
        44.9,
        37.9,
        33,
        43.9,
        49.6,
        52,
        37.5,
        50,
        35.9,
        42.9,
        107,
        112,
        44.9,
        55,
        102,
        35.5,
        62.9,
        39,
        110,
        8,
        62,
        85.9,
        57,
        110,
        67.7,
        89.5,
        70,
        74,
        13,
        48,
        24,
        53.5,
        34.5,
        53,
        87.5,
        33.5,
        24,
        9.6,
        30,
        41,
        30,
        38.9,
        20.7,
        49.9,
        18.6,
        39,
        34,
        16,
        18.9,
        15.2,
        41.5,
        53,
        22,
        24.9,
        6.7,
        32.5,
        30,
        59,
        29.5,
        26,
        16.5,
        39,
        48.9,
        33.5,
        46,
        54,
        57.9,
        37.9,
        32,
        31,
        34,
        29,
        32.5,
        51.9,
        31,
        41.8,
        48,
        28,
        35,
        46.5,
        51.9,
        35.4,
        16,
        35,
        35,
        36.5,
        35.9,
        45,
        40,
        35,
        38,
        37,
        23,
        25.5,
        39.5,
        21.5,
        9,
        67.5,
        13.4,
        12.5,
        28.5,
        23,
        33.5,
        9,
        11,
        30.9,
        31.65,
        33,
        33.4,
        47,
        40,
        46,
        45.5,
        57,
        29.9,
        30,
        34,
        51,
        64.5,
        57.5,
        85.5,
        61,
        38,
        56.5,
        60.4,
        51.5,
        54,
        69,
        56,
        27.9,
        37.5,
        32.9,
        22,
        29.9,
        39.9,
        32.6,
        38.5,
        21.5,
        25.9,
        27.5,
        22.9,
        31.5,
        8.5,
        5.5,
        33,
        57,
        47,
        43.5,
        43.9,
        68.5,
        44.25,
        61,
        40,
        44.5,
        57,
        35,
        35.1,
        64.5,
        40,
        42.6,
        50,
        58,
        58,
        55,
        43,
        54,
        39,
        45,
        42,
        38.9,
        43.215,
        26.5,
        30,
        29.5
      ),
      new_baltimore.AGE = c(
        148L,
        9L,
        23L,
        5L,
        19L,
        20L,
        20L,
        22L,
        4L,
        23L,
        20L,
        30L,
        18L,
        75L,
        60L,
        65L,
        14L,
        45L,
        14L,
        22L,
        35L,
        5L,
        60L,
        14L,
        19L,
        11L,
        16L,
        19L,
        17L,
        24L,
        22L,
        27L,
        3L,
        21L,
        20L,
        4L,
        40L,
        23L,
        35L,
        25L,
        17L,
        26L,
        15L,
        29L,
        24L,
        30L,
        19L,
        50L,
        18L,
        74L,
        22L,
        24L,
        20L,
        7L,
        47L,
        50L,
        45L,
        48L,
        50L,
        48L,
        55L,
        27L,
        20L,
        33L,
        40L,
        25L,
        25L,
        40L,
        30L,
        40L,
        22L,
        25L,
        29L,
        49L,
        35L,
        55L,
        30L,
        15L,
        40L,
        35L,
        70L,
        25L,
        25L,
        30L,
        30L,
        50L,
        25L,
        70L,
        55L,
        40L,
        70L,
        20L,
        20L,
        25L,
        18L,
        20L,
        2L,
        8L,
        25L,
        18L,
        30L,
        35L,
        21L,
        20L,
        24L,
        13L,
        25L,
        18L,
        30L,
        20L,
        22L,
        28L,
        50L,
        20L,
        38L,
        17L,
        22L,
        27L,
        25L,
        25L,
        25L,
        30L,
        60L,
        22L,
        30L,
        28L,
        45L,
        100L,
        60L,
        50L,
        35L,
        50L,
        24L,
        50L,
        33L,
        40L,
        50L,
        25L,
        48L,
        10L,
        45L,
        20L,
        25L,
        25L,
        22L,
        21L,
        29L,
        18L,
        2L,
        19L,
        49L,
        10L,
        25L,
        16L,
        17L,
        27L,
        34L,
        2L,
        24L,
        23L,
        40L,
        25L,
        45L,
        26L,
        37L,
        15L,
        22L,
        75L,
        28L,
        31L,
        100L,
        15L,
        80L,
        75L,
        23L,
        15L,
        21L,
        2L,
        25L,
        23L,
        0L,
        4L,
        40L,
        55L,
        21L,
        45L,
        50L,
        5L,
        50L,
        22L,
        22L,
        6L,
        18L,
        18L,
        23L,
        3L,
        1L,
        47L,
        21L,
        29L,
        0L,
        29L,
        24L,
        22L
      )
    ),
    class = "data.frame",
    row.names = c(NA,-204L)
  )

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

请远离我 2025-02-19 09:49:34

有几种方法可以做到这一点。最简单的可能是创建在text()调用中使用的子集。

我添加了 + .1和 + 1,以便值不在三角形的顶部。

new_baltimore$col = col
nb <- new_baltimore[new_baltimore$col == "red", ]
text(nb$SQFT + .1, nb$PRICE + 1, labels = nb$AGE, cex=0.4)

它并不是真正清晰的;不过,这是一个特写。

如果我将文本中的cex更改为.6&amp;使我的任意偏移较小,情况要好得多。

plot(new_baltimore$SQFT, new_baltimore$PRICE, 
     col=col, pch=pch, xlab="SQFT", ylab="PRICE")
text(nb$SQFT + .05, nb$PRICE + 1, labels = nb$AGE, cex=0.6)

There are a few ways you could do this. The simplest may be to create a subset to use in the text() call.

I added the + .1 and + 1 so that the values weren't on top of the triangles.

new_baltimore$col = col
nb <- new_baltimore[new_baltimore$col == "red", ]
text(nb$SQFT + .1, nb$PRICE + 1, labels = nb$AGE, cex=0.4)

It's not really legible; here's a close-up, though.

enter image description here

If I change the cex in the text to .6 & the make my arbitrary offset smaller it's a little better.

enter image description here

plot(new_baltimore$SQFT, new_baltimore$PRICE, 
     col=col, pch=pch, xlab="SQFT", ylab="PRICE")
text(nb$SQFT + .05, nb$PRICE + 1, labels = nb$AGE, cex=0.6)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文