S3主题的R绘图方法

时间:2017-11-10 16:09:45

标签: r plot

我正在尝试为S3类shwehart的对象编写一个plot方法。此图应显示Xi的值,应包括警告限制和动作限制线。 我试图使用plot.shewhart(x,y,...),R给了我一个情节,但没有直线。 谁能帮助我?提前谢谢。

<?php
    session_start();  
?>
<html>
    <head></head>
    <body>
        <?php
            require("config.php");
            $id = $_POST['id'];
            $sql = "select * from users where id='$id'";
            $res = mysqli_query($con, $sql);
            $row = mysqli_fetch_array($res);
            $user_to = $row['name'];
            $sql1 = "select * from chats where user_from='$_SESSION[name]' AND user_to='$user_to' OR user_to='$_SESSION[name]' AND user_from='$user_to' order by id";
            $res1 = mysqli_query($con, $sql1);
            if(mysqli_num_rows($res1) > 0) {
                while($row = mysqli_fetch_array($res1)) {
                    if($row['user_from'] == $_SESSION['name'])
                        $color = 'red';
                    else
                        $color = 'purple';
                    echo '<i><p style="font-family:arial;color:' . $color . ';font-size:15px;">' . $row['msg'] . '</p>';
                }
            } else
                echo "No msgs <br />";
        ?>
    </body>
</html>

1 个答案:

答案 0 :(得分:2)

您发布的代码中存在两个问题。

1)您希望像数据框一样使用samean - 您希望samean[, 1]之类的内容能够正常运行 - 但也喜欢您的新课程shewhart。因此,您不希望替换 data.frame类,您希望扩展它。我们改变你的行

# class(samean)<-"shewhart" # bad
class(samean) <- c("shewhart", class(samean)) # good

这样它仍然是data.frame,它只是一种特殊类型的数据框:

class(samean)
# [1] "shewhart"   "data.frame"

2)对于函数参数,请使用=而非<-。这是plot命令中的问题。此外,您的函数将其输入命名为x,因此您应该仅将其引用为函数内的x

# plot(x<-samean[,1],y<-samean[,2], type="b", col="blue", 
   xlim<-c(0,10), ylim<-c(120,140)   ) # bad

plot(x = x[,1], y = x[,2], type = "b", col = "blue", 
   xlim = c(0,10), ylim = c(120,140)   ) # good

通过这些更改,代码可以按照您的描述进行操作。我重新格式化了可读性,但唯一真正的变化是上面提到的那些。

aa <- c(1:10)
bb <- c(127, 128, 128.5, 125.5, 129, 126.5, 129, 126, 125, 130)
samean <- data.frame(aa, bb)

class(samean) <- c("shewhart", class(samean))

plot.shewhart <- function(x) {
  mu = 127
  sigma = 3.4
  plot(
    x = x[, 1],
    y = x[, 2],
    type = "b",
    col = "blue",
    xlim = c(0, 10),
    ylim = c(120, 140)
  )

  abline(h = mu, col = "blue")
  abline(h = mu + 3 * sigma / sqrt(100), col = "green")
  abline(h = mu - 3 * sigma / sqrt(100), col = "green")
}

plot(samean)

enter image description here

请立即删除您的问题。