【问题标题】:How can i show wordcloud in html?如何在 html 中显示 wordcloud?
【发布时间】:2019-07-01 05:38:26
【问题描述】:

我在 view.py 中创建了 wordcloud 函数。没有错误,但没有显示在 html 中。

我使用 {{ wordcloud }} 在模板中显示它。

<div style="margin-bottom:20px;"> {{ wordcloud }} </div>
&nbsp;<span id="clipboard-movie"></span><br />
from django.shortcuts import render
from django.http import HttpResponse
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from .models import ArticleData, Category, Keyword

import requests
from urllib.parse import urlparse
from newspaper import Article# Newspaper
import matplotlib.pyplot as plt

import numpy as np
from PIL import Image
from wordcloud import STOPWORDS

def word_cloud(text):
    whale_mask = np.array(Image.open("PK_t.png"))
    stopwords ={'은','입니다'}
    plt.figure(figsize = (20,5))
    #plt.imshow(whale_mask , cmap = plt.cm.gray , interpolation = 'bilinear')
    font_path = 'C:/Users/Jeong Suji/NanumBarunGothic.ttf'
    wc = WordCloud(font_path=font_path,background_color = 'white', max_words=2000, mask = whale_mask,
              stopwords = stopwords)
    wc= wc.generate(text)
    plt.figure(figsize= (10,5))
    plt.imshow(wc,interpolation= 'bilinear')
    plt.axis("off")
    image=plt.show()
    return image

def cloud_gen(request):
    text = ''
    for i in ArticleData.objects.all():
        if __name__ == '__main__':
            text += i.text
    wordcloud = word_cloud(text)
    return render(request, 'articles/index.html', {'wordcloud':wordcloud})

...

没有错误,但是wordcloud没有显示在html中。

【问题讨论】:

    标签: html django-views word-cloud


    【解决方案1】:

    这就是我将图像传递给 html 模板的方式。

    # Display the generated image:
    import matplotlib.pyplot as plt
    import io
    import urllib, base64
    def word_cloud():
        '''your code'''
        plt.imshow(wc, interpolation='bilinear')
        plt.axis("off")
    
        image = io.BytesIO()
        plt.savefig(image, format='png')
        image.seek(0)  # rewind the data
        string = base64.b64encode(image.read())
    
        image_64 = 'data:image/png;base64,' + urllib.parse.quote(string)
        return image_64
    

    所以你应该做以下事情

    def cloud_gen(request):
        '''Your code'''
    
        wordcloud = word_cloud(text)
        return render(request, 'articles/index.html', {'wordcloud':wordcloud}
    

    注意:在保存图像之前不要调用 plt.show()。 plt.show() 重置实例。

    【讨论】:

      猜你喜欢
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      相关资源
      最近更新 更多