Умлаутс в матплотлиб используя Flask - PullRequest
0 голосов
/ 02 апреля 2020

Когда я запускаю свой код в python, я получаю результирующий график, который умлавляет символы на оси 'x'.

import matplotlib.pyplot as plt 
input_text = "J’ai deux frères. Le premier s’appelle Thomas"
upper_text = input_text.upper()
print (upper_text)
#letters = "àèùéâêîôûçëïü"
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÂÄÈÉÊËÎÏÔŒÙÛÜŸÇ"

counter = {}

for i in letters:
    qty = upper_text.count(i)
    counter.update({i: qty})

print (counter)

names = list(counter.keys())
values = list(counter.values())

plt.bar(names, values, color="#6c3376")
plt.xlabel('Letters')
plt.ylabel('Qty')

plt.savefig('line_plot.jpg')code here

правильные умлауты

но если я запускаю то же самое в Flask приложении на pythonanywhere.com, мои символы умлаутса отображаются неправильно, как на прикрепленном рисунке.

Flask код

enter code here
- `# -*- coding: utf-8 -*-
 import os, datetime
 import glob
 from flask import Flask, request, render_template
 import matplotlib.pyplot as plt
 app = Flask(__name__)


 @app.route('/')
 @app.route('/home')
 def Home_Page():
    files = glob.glob('/home/SHIPU/mysite/static/*')
    for f in files:
       os.remove(f)
 return render_template('home.html')

 @app.route('/', methods=['POST'])
    def my_form_post():
       text = request.form['text']
       text_low = text.upper()
       symbols = "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÂÄÈÉÊËÎÏÔŒÙÛÜŸÇ"
       #symbols = "abcdefghijklmnopqrstuvwxyzäöüßàâæçéèêëîïôœùûüÿ"
       calc = {}

 for i in symbols:
      count_of = text_low.count(i)
      calc.update({i:count_of})


 letters = list(calc.keys())
 values = list (calc.values())
 x = datetime.datetime.now()
 x_mil = x.strftime("%f")
 file_name = 'new_plot' + x_mil + '.png'
 url = 'static/' + file_name

 plt.bar(letters, values, color="#6c3376")
 plt.xlabel('Letters')
 plt.ylabel('Qty')
 #plt.xticks(fontsize=10)
 #plt.tick_params(axis = 'x', pad=10)
 plt.savefig('mysite/static/' + file_name)
 plt.close()
 return render_template('home.html', qty_html = calc, text_low_html = text_low, name = file_name, url = URL)


 @app.route('/about')
 def about():
     return render_template('about.html')

неправильные умлауты

Может ли кто-нибудь помочь мне получить правильные умлауты в Flask?

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Похоже, что у matplotlib, который предварительно установлен в PythonAnywhere, может быть ошибка, из-за которой умлауты не видны, но обновление до matplotlib == 3.2.1 исправило умлауты для меня.

0 голосов
/ 03 апреля 2020

Я протестировал ваш код, запустив его в виртуальной среде с

Python 3.7
Flask 1.1.1
matplotlib 3.2.1

и тестовым HTML файлом

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body>
    <h1>qty_html</h1>
    {{qty_html}}
</body>
</html>

Все символы, включая умлауты, отображаются нормально .

Возможно, ошибка кроется в вашем HTML коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...