qq_38182562 2019-04-24 16:08 采纳率: 0%
浏览 701

matplotlib词云和饼状图的标注问题

为啥词云的左上角会出现饼状图的标注,怎么去掉词云这部分的标注,还有饼状图柱状图和词云函数的调用顺序也会影响最后绘制出来的图片,这是为什么???

import pymongo
import snownlp as sn
import matplotlib.pyplot as plt
import numpy as np
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import jieba
from os import path
from PIL import Image
from wordcloud import WordCloud

bg = np.array(Image.open("./data/233.jpg"))
d = path.dirname(__file__)

stopwords_path = './data/stop_word.txt'

text_path = "test.txt"
text = open(path.join(d, text_path), encoding='utf-8').read()

class filedialogdemo(QWidget):
def init(self, parent=None):
super(filedialogdemo, self).__init__(parent)
layout = QHBoxLayout()
self.lable1 = QLabel()
self.lable1.setPixmap(QPixmap("./data/bar.jpg"))
layout.addWidget(self.lable1)
self.lable2 = QLabel()
self.lable2.setPixmap(QPixmap("./data/pie.jpg"))
layout.addWidget(self.lable2)
self.lable3 = QLabel()
self.lable3.setPixmap(QPixmap("./data/WordCloud.png"))
layout.addWidget(self.lable3)
self.setLayout(layout)
self.setWindowTitle("Result")

def sentiment(text):
if text == '':
return 0.5
else:
s = sn.SnowNLP(text)
return s.sentiments

def Paint_Bar(num1, num2, num3, num4):
plt.rcParams['font.sans-serif'] = ['SimHei'] #显示中文
plt.bar(0.125, num1,width=0.1, label='really bad')
plt.bar(0.375, num2,width=0.1, label='bad')
plt.bar(0.625, num3,width=0.1, label='good')
plt.bar(0.875, num4,width=0.1, label='really good')
plt.text(0.125, num1 + 0.5, '%d' % num1, ha='center', va='bottom')
plt.text(0.375, num2 + 0.5, '%d' % num2, ha='center', va='bottom')
plt.text(0.625, num3 + 0.5, '%d' % num3, ha='center', va='bottom')
plt.text(0.875, num4 + 0.5, '%d' % num4, ha='center', va='bottom')
plt.xlabel(u'x轴')
plt.ylabel(u'y轴')
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
plt.xlim(0, 1)
plt.xticks([0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1])
plt.title(u'柱形图')
plt.legend()
plt.savefig('./data/bar.jpg')

def Paint_Scatter(list):
plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
plt.title(u'散点图')
list_len = len(list)
for list_num in range(list_len):
plt.scatter(list[list_num], list[list_num])

def Paint_Pie(num1, num2, num3, num4):
list = []
list.append(num1)
list.append(num2)
list.append(num3)
list.append(num4)
s = np.max(list)
if s == num1:
k = 0
elif s == num2:
k = 1
elif s == num3:
k = 2
else:
k = 3
explode = [0,0,0,0]
explode[k] = 0.1
labels = 'really bad', 'bad', 'good', 'really good'
plt.axes(aspect=1) #椭圆变标准圆
plt.pie(x=list, explode=explode, labels=labels, autopct='%3.1f %%',
shadow=True, labeldistance=1.1, startangle=90, pctdistance=0.6)
plt.axis('equal')
plt.savefig('./data/pie.jpg')

def JiebaClearText(text):
MywordList = []
seg_list = jieba.cut(text, cut_all=False)
listStr = '/'.join(seg_list)
f_stop = open(stopwords_path, encoding='utf-8')
try:
f_stop_text = f_stop.read()
finally:
f_stop.close()
f_stop_seg_list = f_stop_text.split("\n")
for myword in listStr.split('/'):
if not(myword.split()) in f_stop_seg_list and len(myword.strip()) > 1:
MywordList.append(myword)
return ' '.join(MywordList)

def Paint_cloud():
text1 = JiebaClearText(text)

wc = WordCloud(background_color="white",
               max_words=150,
               mask=bg,  # 设置图片的背景
               max_font_size=60,
               random_state=42,
               font_path='C:/Windows/Fonts/simkai.ttf'  # 中文处理,用系统自带的字体
               ).generate(text1)
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.savefig('./data/WordCloud.png')

def run():
num1 = 0
num2 = 0
num3 = 0
num4 = 0
list0 = []
mongo_uri = 'mongodb://localhost:27017/'
client = pymongo.MongoClient(mongo_uri)
db = client.weibo
collection = db.weibo
data = collection.find()
data = list(data)
list_len = int(len(data))
f = open('test.txt', 'w', encoding='utf-8')
for num in range(list_len):
dict = data[num]
text = dict['content']
f.write(text)
if text != ':' and text != 0:
text_num = sentiment(text)
list0.append(text_num)
if text_num < 0.25:
num1 += 1
elif text_num < 0.5:
num2 += 1
elif text_num <0.75:
num3 += 1
else:
num4 += 1
f.close()

Paint_Bar(num1, num2, num3, num4)   #柱形图
Paint_Pie(num1, num2, num3, num4)   #饼状图
Paint_cloud()                       #词云

app = QApplication(sys.argv)
ex = filedialogdemo()
ex.show()
sys.exit(app.exec_())

if name == '__main__':
run()
图片说明

  • 写回答

1条回答

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-30 01:49
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序