18 svar
409 visningar
sisi.2121 behöver inte mer hjälp
sisi.2121 77 – Fd. Medlem
Postad: 21 dec 2019 09:38

Graf

Jag har kodat och fått fram den graf som jag ville. Men jag vill bli av med de prickar som finns, men har ingen aning hur? 

 

Dr. G 9459
Postad: 21 dec 2019 09:42

Kan du visa koden?

pepparkvarn 1871 – Fd. Medlem
Postad: 21 dec 2019 09:42

Hur ser koden för grafen ut? :)

sisi.2121 77 – Fd. Medlem
Postad: 21 dec 2019 09:47 Redigerad: 21 dec 2019 09:49
sisi.2121 skrev:

Jag har kodat och fått fram den graf som jag ville. Men jag vill bli av med de prickar som finns, men har ingen aning hur? 

 

Yes! 

Först har jag infört input sats i början av programmet som är mellan år 1900 och 2020. Dessutom har jag kodat de olika listor som jag behöver.

För att rita grafen har jag använt:

plt.plot(yearlist,snowdepthlist,'bo-')
plt.xlabel('year')
plt.ylabel('snow depth, centimeter')
plt.title('Maximal Snow Depth in Stockholm, December-April')
plt.ylim([0,80])
plt.show()

Dr. G 9459
Postad: 21 dec 2019 09:49

Prova att ta bort o:

plt.plot(yearlist,snowdepthlist,'b-')

sisi.2121 77 – Fd. Medlem
Postad: 21 dec 2019 09:53 Redigerad: 21 dec 2019 10:31
Dr. G skrev:

Prova att ta bort o:

plt.plot(yearlist,snowdepthlist,'b-')

Ja det funkade! Tack så mycket! :) 

Jag har två frågor till, år 1900 ska vara i nollställen...men det känns som att det inte ligger i nollställen. Jag vill att det ska ligga mer till vänster, dvs där 0 för y-axeln står. Hur ska jag göra? Eller är det jag som ser fel? :) 

Den andra frågan är hur jag ska markera medelvärdet i grafen? Jag behöver tips för att komma fram till en kod! :) 

Dr. G 9459
Postad: 21 dec 2019 11:02

Prova t.ex

plt.xlim(1900,2020)

Här hittar du en massa användbara exempel och annat.

För medelvärdet så finns det några olika varianter.

sisi.2121 77 – Fd. Medlem
Postad: 21 dec 2019 13:22 Redigerad: 21 dec 2019 13:39
Dr. G skrev:

Prova t.ex

plt.xlim(1900,2020)

Här hittar du en massa användbara exempel och annat.

För medelvärdet så finns det några olika varianter.

Tack, jag ska kolla på den. Jag behöver också markera de tre största "snow depth" med någon markör. 

Jag har lyckats att koda fram en av de. Men jag undrar om jag kan mäta in alla 3 i en och samma kod med hjälp av en funktion så att det inte ligger i huvudprogrammet och hur jag kan ändra pilen till en stjärna?  

plt.annotate('local max', xy=(1908, 76), xycoords='data', xytext=(0.3, 0.95), textcoords='axes fraction', arrowprops=dict(facecolor='black', shrink=0.05), horizontalalignment='right', verticalalignment='top',)

sisi.2121 77 – Fd. Medlem
Postad: 21 dec 2019 18:04 Redigerad: 21 dec 2019 18:06
sisi.2121 skrev:
Dr. G skrev:

Prova t.ex

plt.xlim(1900,2020)

Här hittar du en massa användbara exempel och annat.

För medelvärdet så finns det några olika varianter.

Tack, jag ska kolla på den. Jag behöver också markera de tre största "snow depth" med någon markör. 

Jag har lyckats att koda fram en av de. Men jag undrar om jag kan mäta in alla 3 i en och samma kod med hjälp av en funktion så att det inte ligger i huvudprogrammet och hur jag kan ändra pilen till en stjärna?  

plt.annotate('local max', xy=(1908, 76), xycoords='data', xytext=(0.3, 0.95), textcoords='axes fraction', arrowprops=dict(facecolor='black', shrink=0.05), horizontalalignment='right', verticalalignment='top',)

Nu har jag lyckats att hitta medelvärdet av min data och markera den i min plott. Men sitter fortfarande med de tre största "snow depth". 

Laguna Online 30252
Postad: 21 dec 2019 18:51

Stjärna kan man plotta dit med
plt.plot([1908],[76], 'k*', markersize=10)

Är det att hitta de tre största som är problemet, eller att markera dem?

sisi.2121 77 – Fd. Medlem
Postad: 21 dec 2019 22:01 Redigerad: 21 dec 2019 22:09
Laguna skrev:

Stjärna kan man plotta dit med
plt.plot([1908],[76], 'k*', markersize=10)

Är det att hitta de tre största som är problemet, eller att markera dem?

Att hitta de tre.

Jag försökte definiera max (har inspirerat av den nedslående koden som jag hittade) men jag får "ValueError: list.remove(x): x not in list":

def hej(list1, N):
new_list = []
for i in range(0, N):
max1 = 0
for j in range(len(list1)):
if list1[j] > max1:
max1 = list1[j];
list1.remove(max1);
new_list.append(max1)
print("Largest numbers are ",new_list)

N = 3

hej(list1, N)

Laguna Online 30252
Postad: 22 dec 2019 09:33

Python och det här forumet går inte bra ihop. När man klistrar in text så försvinner all inledande indentering som är viktig för Python. Jag bytte ut den mot punkter och då ser det ut så här:

def hej(list1, N):
....new_list = []
....for i in range(0, N):
........print(list1)
........max1 = 0
........for j in range(len(list1)):
............if list1[j] > max1:
................max1 = list1[j];
........list1.remove(max1);
........new_list.append(max1)
........print("Largest numbers are ",new_list)

Den koden ser ut att fungera. Först gjorde den inte det, för jag hade fått indenteringen fel när jag försökte återställa den.

Kolla att det bara är två rader som är inskjutna längre än "for j in range(len(list1)):".

sisi.2121 77 – Fd. Medlem
Postad: 22 dec 2019 10:34 Redigerad: 22 dec 2019 11:12
Laguna skrev:

Python och det här forumet går inte bra ihop. När man klistrar in text så försvinner all inledande indentering som är viktig för Python. Jag bytte ut den mot punkter och då ser det ut så här:

def hej(list1, N):
....new_list = []
....for i in range(0, N):
........print(list1)
........max1 = 0
........for j in range(len(list1)):
............if list1[j] > max1:
................max1 = list1[j];
........list1.remove(max1);
........new_list.append(max1)
........print("Largest numbers are ",new_list)

Den koden ser ut att fungera. Först gjorde den inte det, för jag hade fått indenteringen fel när jag försökte återställa den.

Kolla att det bara är två rader som är inskjutna längre än "for j in range(len(list1)):".

Tack! Jag har fått fram de tre största värden men finns det nåt sätt så att jag kan ta borta listorna (se bilden, har fått tre stycken) så att bara svaret står? 

En annan fråga är att hur jag kan markera dessa tre i min graf?

Den här koden hade jag själv tittat på min långa lista och plockat fram talet: plt.plot([1908],[76], 'k*', markersize=10). Jag tänkte nu efter att ha definierat max använda denna info för att markera dessa värden i grafen. 

 

Laguna Online 30252
Postad: 22 dec 2019 11:10

Ta bort första kodraden med print, det var jag som lade dit den för att se vad som händer.

Jag förstår inte den andra frågan. Vilken info är det?

sisi.2121 77 – Fd. Medlem
Postad: 22 dec 2019 11:18
Laguna skrev:

Ta bort första kodraden med print, det var jag som lade dit den för att se vad som händer.

Jag förstår inte den andra frågan. Vilken info är det?

Tack! Nu har de långa listorna försvunnit, men jag vill också att de två första raderna ska försvinna. :/

Laguna Online 30252
Postad: 22 dec 2019 11:27
sisi.2121 skrev:
Laguna skrev:

Ta bort första kodraden med print, det var jag som lade dit den för att se vad som händer.

Jag förstår inte den andra frågan. Vilken info är det?

Tack! Nu har de långa listorna försvunnit, men jag vill också att de två första raderna ska försvinna. :/

Ta bort fyra av blanktecknen framför

        print("Largest numbers are ",new_list)

sisi.2121 77 – Fd. Medlem
Postad: 22 dec 2019 11:45
Laguna skrev:
sisi.2121 skrev:
Laguna skrev:

Ta bort första kodraden med print, det var jag som lade dit den för att se vad som händer.

Jag förstår inte den andra frågan. Vilken info är det?

Tack! Nu har de långa listorna försvunnit, men jag vill också att de två första raderna ska försvinna. :/

Ta bort fyra av blanktecknen framför

        print("Largest numbers are ",new_list)

Tack! Nu har jag min sista fråga! :) 

Jag har fått fram de tre största värden genom den här definitionen. Hur kan jag markera dessa i min graf? 

tidigare hade jag plt.plot([1908],[76], 'k*', markersize=10) men denna går ej. Jag hittade på den här koden genom att studera min långa lista och plocka fram de tre största värden. 

Laguna Online 30252
Postad: 22 dec 2019 17:58
sisi.2121 skrev:
Laguna skrev:
sisi.2121 skrev:
Laguna skrev:

Ta bort första kodraden med print, det var jag som lade dit den för att se vad som händer.

Jag förstår inte den andra frågan. Vilken info är det?

Tack! Nu har de långa listorna försvunnit, men jag vill också att de två första raderna ska försvinna. :/

Ta bort fyra av blanktecknen framför

        print("Largest numbers are ",new_list)

Tack! Nu har jag min sista fråga! :) 

Jag har fått fram de tre största värden genom den här definitionen. Hur kan jag markera dessa i min graf? 

tidigare hade jag plt.plot([1908],[76], 'k*', markersize=10) men denna går ej. Jag hittade på den här koden genom att studera min långa lista och plocka fram de tre största värden. 

Du får modifiera koden så att den plockar fram de årtal som hör ihop med de största värdena också.

sisi.2121 77 – Fd. Medlem
Postad: 23 dec 2019 12:41 Redigerad: 23 dec 2019 14:07
Laguna skrev:
sisi.2121 skrev:
Laguna skrev:
sisi.2121 skrev:
Laguna skrev:

Ta bort första kodraden med print, det var jag som lade dit den för att se vad som händer.

Jag förstår inte den andra frågan. Vilken info är det?

Tack! Nu har de långa listorna försvunnit, men jag vill också att de två första raderna ska försvinna. :/

Ta bort fyra av blanktecknen framför

        print("Largest numbers are ",new_list)

Tack! Nu har jag min sista fråga! :) 

Jag har fått fram de tre största värden genom den här definitionen. Hur kan jag markera dessa i min graf? 

tidigare hade jag plt.plot([1908],[76], 'k*', markersize=10) men denna går ej. Jag hittade på den här koden genom att studera min långa lista och plocka fram de tre största värden. 

Du får modifiera koden så att den plockar fram de årtal som hör ihop med de största värdena också.

Det som gör att jag har fastnat är att jag inte vet hur jag ska koda och var nånstans. Jag har fått fram den graf som jag ville för min långa lista och har markerat medelvärdet av min datamängd i min plott. Efteråt har jag definierat de tre största värden. :/ 

Ska jag koda efter min def? Själv tänkte jag såhär:

 

plt.plot(yearlist,hej(listna,N),'k*', markersize=10))

men det är fel. Jag tänkte att hej(listan,N) står för min max och yearlist är x-axeln och då matchas max och år. :/ 

Svara
Close