Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1d88bb1

Browse files
committed
add plotting weather temperature forecast using matplotlib tutorial
1 parentf2a13df commit1d88bb1

File tree

4 files changed

+94
-0
lines changed

4 files changed

+94
-0
lines changed

‎README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ This is a repository of all the tutorials of [The Python Code](https://www.thepy
117117
-[How to Replace Text in Docx Files in Python](https://www.thepythoncode.com/article/replace-text-in-docx-files-using-python). ([code](general/docx-file-replacer))
118118
-[How to Make a Text Adventure Game in Python](https://www.thepythoncode.com/article/make-a-text-adventure-game-with-python). ([code](general/text-adventure-game))
119119
-[Zipf's Word Frequency Plot with Python](https://www.thepythoncode.com/article/plot-zipfs-law-using-matplotlib-python). ([code](general/zipf-curve))
120+
-[How to Plot Weather Temperature in Python](https://www.thepythoncode.com/article/interactive-weather-plot-with-matplotlib-and-requests). ([code](general/interactive-weather-plot/))
120121

121122

122123

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#[How to Plot Weather Temperature in Python](https://www.thepythoncode.com/article/interactive-weather-plot-with-matplotlib-and-requests)
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
importmatplotlib.pyplotasplt
2+
frommatplotlib.widgetsimportRadioButtons
3+
importseaborn
4+
seaborn.set_style("darkgrid")
5+
importrequests
6+
importjson
7+
8+
# Define some Locations to choose from.
9+
# Latitude and Longitude
10+
locations= {
11+
'Schaffhausen': ['47.7','8.6'],
12+
'Sydney': ['-33.86','151.20'],
13+
'Kyiv': ['50.4422','30.5367'],
14+
'Constantine': ['36.368258','6.560254'],
15+
'Yakutsk': ['62.0','129.7'],
16+
}
17+
18+
# Setting Up Matplotlib, using the OOP Approach
19+
fig,ax=plt.subplots()
20+
# the plot is created with the first location
21+
p=None
22+
23+
# make a function to get the temperatures of a given location
24+
defgetTemperatures(location):
25+
# get the lat and long of the location
26+
lat,lon=locations[location]
27+
req=requests.get(f'https://api.open-meteo.com/v1/forecast?latitude={lat}&longitude={lon}&hourly=temperature_2m')
28+
req=json.loads(req.text)
29+
# get the tempratures
30+
temperatures=req['hourly']['temperature_2m']
31+
# get the times
32+
times=req['hourly']['time']
33+
returntimes,temperatures
34+
35+
36+
# Make a dictionary with the locations as keys and the getTemperatures() function as values
37+
location2data= {}
38+
forlocationinlocations:
39+
location2data[location]=getTemperatures(location)
40+
41+
42+
defchangeLocation(newLocation):
43+
globalp
44+
# get the data of the location from the dictionary
45+
times,temperatures=location2data[newLocation]
46+
ifp:
47+
p.set_ydata(temperatures)
48+
# reflect changes in the plot
49+
plt.draw()
50+
else:
51+
# Make a Plot and save the first object to a variable
52+
# p will be a Line2D object which can be changed at a later time
53+
p=ax.plot(times,temperatures,ls=':',lw=3)[0]
54+
# set the x-axis to the times
55+
xRange=list(range(0,168,24))+ [168]
56+
ax.set_xticks(xRange)
57+
# set the y-axis to the temperatures
58+
yRange=list(range(-20,55,5))
59+
ax.set_yticks(yRange)
60+
plt.tick_params(axis="both",which='both',labelrotation=-10)# rotate the labels
61+
# set the title
62+
ax.set_title('Temperatures in '+newLocation)
63+
64+
65+
# Call the change Location function for the first time
66+
changeLocation('Schaffhausen')
67+
68+
# Making the Radio Buttons
69+
buttons=RadioButtons(
70+
ax=plt.axes([0.1,0.1,0.2,0.2]),
71+
labels=locations.keys()
72+
)
73+
74+
# Connect click event on the buttons to the function that changes location.
75+
buttons.on_clicked(changeLocation)
76+
77+
# adjust the plot size
78+
plt.subplots_adjust(left=0.1,bottom=0.40)
79+
80+
# Label the Plot
81+
ax.set_xlabel('Times [Next Seven Days]')
82+
# ax.xaxis.label.set_color(labelColor)
83+
84+
ax.set_ylabel('Temperatures [Celcius]')
85+
# ax.yaxis.label.set_color(labelColor)
86+
87+
plt.savefig('file.svg',format='svg')
88+
89+
plt.show()
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
matplotlib
2+
seaborn
3+
requests

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp