可视化文本数据的分散

时间:2018-10-13 09:08:29

标签: r for-loop visualization

我正在尝试可视化文本数据如何在句子中的各个位置分布。这是一些模拟数据:

range

对于情节,我首先创建一个虚拟框架:

<input 
  type="text" 
  ng-model="vm.rangeInput" 
  placeholder="enter range"
  ng-keyup="$event.which === 13 && vm.addToRange()">

<br>
<br>

<select 
  class="width"
  ng-change="vm.selectValueChanged()"
  multiple 
  name="selectValue" 
  id="selectValue" 
  ng-model="vm.selectValue">
  <option ng-value="i" ng-repeat="i in vm.range">{{i}}</option>
</select>

然后绘制虚拟框架的轮廓:

class HomeCtrl {
  constructor($scope) {
    'ngInject';

    this.range = [];
    this.rangeInput = '';
    this.selectValue = '';

    this.addToRange = () => {
      const total = +this.rangeInput.split('-').reverse()[0];
      this.range = Array(total).fill(1).map((x, y) => x + y);
      this.rangeInput = '';
    }

    this.selectValueChanged = () => {
      console.log(this.selectValue);
    }

  }
}

export default HomeCtrl;

现在,我想强调出现“ a”项的情况;为此,我定义了一个循环,并使用text()函数使用红色实线突出显示“ a”,然后将其他所有内容打印为灰色:

# create mock data:
dfmock <- data.frame(letter = c(sample(letters[1:3], 25, replace = T)),
                 position = c(rep(1, 5), rep(2, 5), rep(3, 5), rep(4, 5), rep(5, 5))
                 ) 

在生成绘图时,每个位置显示的高光数量错误。我不能仅仅弄清楚为什么会这样。非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我不是您想要的输出的100%,但是从上面的猜测可能会解决此问题:

使用代码设置虚拟数据帧

# create mock data:
dfmock <- data.frame(letter = c(sample(letters[1:3], 25, replace = T)),
                     position = c(rep(1, 5), rep(2, 5), rep(3, 5), rep(4, 5), rep(5, 5))
) 

# create dummy data frame for plot:
dummytest <-data.frame(slots = 1:5, rows = 1:5)

再次绘制数据

# plot:
plot(dummytest$rows ~ dummytest$slots, type="n", frame=F, axes=F)
axis(1, at=seq(1:5), labels=unique(dfmock$position))
  

FIX:

似乎您的FOR循环正在遍历错误的数据,因此您的ifelse返回的逻辑向量并不总是与绘图数据相同。

# print "a" in positions:
for(i in dfmock$position){
  text(i, dummytest$rows, "___", cex=1.75,
       col = ifelse(dfmock[dfmock$position==i,]$letter=="a", "red", "grey"))
}

这将产生以下dfmock的以下PLOT:

> dfmock[dfmock$letter=="a",]
   letter position
4       a        1
8       a        2
12      a        3
13      a        3
14      a        3
21      a        5
25      a        5

enter image description here