Как заставить графики печататься индивидуально при запуске в функции? - PullRequest
0 голосов
/ 27 апреля 2020

Ниже приведена функция, которую я использую для печати 3 гистограмм. Хотя, когда я запускаю код, все 3 печатных графика объединяются, а не по отдельности.

Когда я запускаю последние 3 строки отдельно, я могу получить графики отдельно, однако это не идеально, так как я хочу иметь возможность запустить код все как один.

Самое главное, как я могу заставить каждую диаграмму печатать отдельно?

Кроме того, как я могу сохранить каждый график с уникальным именем, например, день 1, день 2, день 3? Кроме того, можно ли на каждом графике иметь уникальные заголовки, например, наиболее часто встречающиеся твиты: День 1, наиболее распространенные твиты: День 2, наиболее распространенные твиты: День 3?

def tweet_analysis_per_day(tweet):
  # tokenizing tweet text data
  tweet = [word_tokenize(i) for i in tweet]
  #splits list into words
  tweet  = list(itertools.chain(*tweet))
  #lowercase
  tweet = [word.lower() for word in tweet]
  #lemantize
  tweet = [nltk.WordNetLemmatizer().lemmatize(word) for word in tweet]
  # remove stopwords
  tweet = [word for word in tweet if word not in custom_stopwords_tweet]
  tweet = [word for word in tweet if word not in default_stopwords]
  tweet = [word for word in tweet if word not in custom_stopwords]
  #removing 1 letter words and nonetype
  tweet = [word for word in tweet if len(word) > 1]

  # obtaining word frequencies, then converting to a dataframe of most common words
  dist = nltk.FreqDist(tweet)
  top15 =[]
  for word, frequency in dist.most_common(15):
    top15.append(u'{} {}'.format(word, frequency))
  top15 = pd.DataFrame({'Name': top15})
  top15 = top15.Name.str.split(expand=True)
  top15.columns = {'word', 'frequency'}
  top15.rename(columns = {'frequency':'words', 'word':'frequency'}, inplace = True)
  top15['frequency'] = top15['frequency'].astype(int)

  # Create horizontal bars
  plt.barh(top15['words'], top15['frequency'], color= '#005EB8')
  plt.title('Most commonly tweeted words: Day ')
  plt.ylabel('Top 15 words') 
  plt.xlabel('Frequency')  
  plt.gca().invert_yaxis()
  plt.gca().set_xlim([1000,10000])
  plt.gcf().set_size_inches(8, 6)
  plt.savefig('tweet.png')


#strip grouped tweets by day to lists
day1tweets = tweet_analysis_per_day(day1['text'].to_list()) 
day2tweets = tweet_analysis_per_day(day2['text'].to_list()) 
day3tweets = tweet_analysis_per_day(day3['text'].to_list()) 

...