有一个最常出现的4个单词的代码
string words = "One one Two two three four".ToLower();
var results = words
.Split(' ')
.Where(x => x.Length > 3)
.GroupBy(x => x)
.Select(x => new {
Count = x.Count(),
Word = x.Key })
.OrderByDescending(x => x.Count)
.Take(3);
foreach (var item in results)
{
MessageBox.Show(String.Join("\n", results.Select(x => String.Format("{0} --- {1} ", x.Word, x.Count)));
}
如何制作像这样的词语频率图表
我知道如何制作图表,但我不知道如何将其连接到我的代码
this.chart1.Series["Series1"].Points.AddXY("one", 2);
this.chart1.Series["Series1"].Points.AddXY("two", 2);
this.chart1.Series["Series1"].Points.AddXY("three", 1);
this.chart1.Series["Series1"].Points.AddXY("four", 1);
答案 0 :(得分:2)
就像这样:
foreach (var r in results )
{
chart1.Series["Series1"].Points.AddXY(r.Word, r.Count);
}
稍微更改数据后:
string words = "One one Two two three four four four two two two five five".ToLower();
我们得到了这个:
请注意,这是将字符串作为x值的情况。这意味着DataPoints中的实际x值不是那些字符串(它们是double
)
但都是0
。
这有各种各样的含义。
一个是你不能轻易地添加另一个系列,其中的点显示其他值,但依赖于相同的x值。您也不能使用(丢失)值来设置最小值/最大值或格式化标签..
通常可以通过调用Chart.AlignDataPointsByAxisLabel来使其他系列具有相同的x值但可能以不同的顺序运行。