python编程:计算词频的函数绘制图形-8_彭世瑜_新浪博客

举报
彭世瑜 发表于 2021/08/13 23:45:19 2021/08/13
【摘要】 源码: import turtle   ##全局变量## #词频排列显示个数 count = 10 #单词频率数组-作为y轴数据 data = [] #单词数组-作为x轴数据 words = [] #y轴显示放大倍数-可以根据词频数量进行调节...
python编程:计算词频的函数绘制图形-8


源码:
  1. import turtle
  2.  
  3. ##全局变量##
  4. #词频排列显示个数
  5. count = 10
  6. #单词频率数组-作为y轴数据
  7. data = []
  8. #单词数组-作为x轴数据
  9. words = []
  10. #y轴显示放大倍数-可以根据词频数量进行调节
  11. yScale = 6
  12. #x轴显示放大倍数-可以根据count数量进行调节
  13. xScale = 30
  14.  
  15. ################# Turtle Start  ####################  
  16. #从点(x1,y1)到(x2,y2)绘制线段
  17. def drawLine(t, x1, y1, x2, y2):
  18.     t.penup()
  19.     t.goto (x1, y1)
  20.     t.pendown()
  21.     t.goto (x2, y2)
  22.  
  23. # 在坐标(x,y)处写文字
  24. def drawText(t, x, y, text):
  25.     t.penup()
  26.     t.goto (x, y)
  27.     t.pendown()
  28.     t.write(text)
  29.  
  30. def drawGraph(t):
  31.     #绘制x/y轴线
  32.     drawLine (t, 003600)
  33.     drawLine (t, 030000)
  34.  
  35.     #x轴: 坐标及描述
  36.     for in range(count):
  37.         x=x+1 #向右移一位,为了不画在原点上
  38.         drawText(t, x*xScale-4-20, (words[x-1]))
  39.         drawText(t, x*xScale-4, data[x-1]*yScale+10, data[x-1])
  40.     drawBar(t)
  41.  
  42. #绘制一个柱体
  43. def drawRectangle(t, x, y):
  44.     = x*xScale
  45.     = y*yScale#放大倍数显示
  46.     drawLine(t, x-50, x-5, y)
  47.     drawLine(t, x-5, y, x+5, y)
  48.     drawLine(t, x+5, y, x+50)
  49.     drawLine(t, x+50, x-50)
  50.      
  51. #绘制多个柱体
  52. def drawBar(t):
  53.     for in range(count):
  54.         drawRectangle(t, i+1, data[i])    
  55. ################# Turtle End  ####################
  56.  
  57.          
  58. #对文本的每一行计算词频的函数
  59. def processLine(line, wordCounts):
  60.     #用空格替换标点符号
  61.     line = replacePunctuations(line)
  62.     #从每一行获取每个词
  63.     words = line.split() 
  64.     for word in words:
  65.         if word in wordCounts:
  66.             wordCounts[word] += 1
  67.         else:
  68.             wordCounts[word] = 1
  69.  
  70. #空格替换标点的函数
  71. def replacePunctuations(line):
  72.     for ch in line:
  73.         if ch in "~@#$%^&*()_-+=<>?/,.:;{}[]|\'""":
  74.             line = line.replace(ch, " ")
  75.     return line
  76.  
  77. def main():
  78.     #用户输入一个文件名
  79.     filename = input("enter a filename:").strip()
  80.     infile = open(filename, "r")
  81.      
  82.     #建立用于计算词频的空字典
  83.     wordCounts = {}
  84.     for line in infile:
  85.         processLine(line.lower(), wordCounts)
  86.          
  87.     #从字典中获取数据对
  88.     pairs = list(wordCounts.items())
  89.  
  90.     #列表中的数据对交换位置,数据对排序
  91.     items = [[x,y]for (y,x)in pairs] 
  92.     items.sort() 
  93.  
  94.     #输出count个数词频结果
  95.     for in range(len(items)-1len(items)-count-1-1):
  96.         print(items[i][1]+"\t"+str(items[i][0]))
  97.         data.append(items[i][0])
  98.         words.append(items[i][1])
  99.          
  100.     infile.close()
  101.      
  102.     #根据词频结果绘制柱状图
  103.     turtle.title('词频结果柱状图')
  104.     turtle.setup(90075000)
  105.     = turtle.Turtle()
  106.     t.hideturtle()
  107.     t.width(3)
  108.     drawGraph(t)
  109.          
  110. #调用main()函数
  111. if __name__ == '__main__':
  112.     main()


python编程:计算词频的函数绘制图形-8

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/109661672

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。