如何在ggplot中绘制点对点(不包括零)

时间:2018-11-02 12:35:37

标签: r ggplot2

我想绘制文本中词性的频率。我有每个POS标签的构面图,每个图中的x轴是句子索引,y轴是该POS标签的频率。

这些图似乎是从点到x轴绘制的,而不是从点到点绘制的。我该如何更改?

library(udpipe)
library(dplyr)
library(stringr)
library(ggplot2)
library(gutenbergr)


ud_model <- udpipe_download_model(language = "english")
ud_model <- udpipe_load_model(ud_model$file_model)
txt<-gutenberg_download(152)
txt<-paste(unlist(txt), collapse =" ")


# Annotate (POS tag) the text

x <- udpipe_annotate(ud_model, txt)
x <- as.data.frame(x)


#Need to get frequency per sentence of each term

heatBySentence<-x%>%select(sentence_id,upos)%>% group_by(sentence_id,upos) %>%summarise(Number=n())


ggplot(data=heatBySentence[19:nrow(heatBySentence),], aes(x=sentence_id, y=Number,group=upos)) +
  geom_point()+
  geom_line()+
  geom_smooth()+
  facet_wrap(~ upos, scales = "free")

1 个答案:

答案 0 :(得分:0)

您的问题主要是规模化,我检查了您的数据,您的数据集中有很多问题,这意味着您的许多观察结果都是这样。如果我们看到您的数据的一部分,该问题将更加清晰

    func retrieveMessages() {

    let testUserOrAd = SwipingView.myAdvertiserVar.advertiser
    print("testing result: \(testUserOrAd) your are a User")

    //if advertiser
    if testUserOrAd == true{
        if let testId = self.toId{
            let MessageDB = Database.database().reference().child("Users").child(toId!).child("Messages").child(uid!)

            MessageDB.observe(.childAdded) { (snapshot) in
                let snapshotValue =  snapshot.value as! Dictionary<String,String>

                let text = snapshotValue["MessageBody"]!
                let fromId = snapshotValue["FromId"]

                let message = Message()
                message.messageBody = text
                message.fromId = fromId

                self.messageArray.append(message)

                self.configureTableView()
                self.messageTableView.reloadData()
            }
        }

    }else{
        //if user

        let MessageDB = Database.database().reference().child("Users").child(uid!).child("Messages").child(toId!)

        MessageDB.observe(.childAdded) { (snapshot) in
            let snapshotValue =  snapshot.value as? [String: AnyObject]

            let text = snapshotValue!["MessageBody"] as? String
            let fromId = snapshotValue!["FromId"] as? String

            let message = Message()
            message.messageBody = text
            message.fromId = fromId

            self.messageArray.append(message)

            self.configureTableView()
            self.messageTableView.reloadData()
        }

    }
}

如果我做的图形与您在此处所做的相同,但仅直到第99句,则结果如下:

heatBySentence<- x %>% select(sentence_id,upos) %>% group_by(sentence_id,upos) %>%summarise(Number=n()) 

firstHundred <- heatBySentence %>% filter(sentence_id < 100)

enter image description here

如您所见,所有点都相互连接,但是由于您的数据集中有很多点,并且您有4000多个句子,因此它们看起来挤在一起,好像每个点都从头开始起源。一开始您的图没有任何问题,只有很多图和塞满了x轴的