3 svar
119 visningar
sandy99 42
Postad: 18 mar 2022 09:35

Pyplot tabelldiagram ser fel ut

Hej! Jag ska plotta en bar chart med hashtags på x-axeln och antal likes på y-axeln, problemet är att på grafen ser det ut som att alla hashtagsen fått samma antal likes, men när jag printar listan med likes varierar dem ganska mycket, hur får jag så att höjden på bar:en överrensstämmer med antalet likes? 

 

import json
import pandas as pd
import matplotlib.pyplot as plt
import functools
import operator
import math


# The hashtag list later is a list of lists, this function flattens it so it can be used for the bar graph
regular_list = []
def transform(nested_list):
for element in nested_list:
if type(element) is list:
regular_list.append(element)
else:
regular_list.append([element])
return regular_list


f = open('santacruz_combined.json')
 
data = json.load(f)

hashtagList = []
likeList = []
filteredHashList = []

for post in data:
likes = post["likes"]
hashes = post["hashtags"]
if likes > 40000:
likeList.append(likes)
hashtagList.append(hashes)

regular_2D_list = transform(hashtagList)

x = functools.reduce(operator.iconcat, regular_2D_list, [])
y = likeList

print(len(x))
print(len(y))
#print(x)
print(y)

low = min(y)
high = max(y)
plt.ylim([math.ceil(low-0.5*(high-low)), math.ceil(high+0.5*(high-low))])

plt.ylabel('Likes')
plt.xlabel('Hashtags')
plt.bar(x, max(y))

plt.show()

farfarMats 1215
Postad: 18 mar 2022 13:20

Ser ut som du plottat maxvärden  max(y) istf y

farfarMats 1215
Postad: 18 mar 2022 13:24

Ett tips var noga med indentationerna, koden blir mycket lättare att följa särskilt för oss nya läsare du själv kommer ju i stort sett ihåg strukturen.  Men av egen erfarenhet när jag kommit tillbaka till egen kod ett par decennier senare för att modifiera den efter en förändrad verklighet ----   man är lost completely lost.

Laguna Online 30711
Postad: 18 mar 2022 13:30

En fördel med python är att man måste indentera rätt för att kunna köra programmet, det är bara vi som inte får se det.

Svara
Close