import csv from datetime import datetime from matplotlib import pyplot as plt filename = 'data/sitka_weather_2018_simple.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(reader) # 从文件中获取 日期 和最高温度 和最低温度 dates, highs, lows = [], [], [] for row in reader: # strptime 格式化日期 current_date = datetime.strptime(row[2], '%Y-%m-%d') dates.append(current_date) high = int(row[5]) highs.append(high) low = int(row[6]) lows.append(low) # 最高温度和最低温度 plt.style.use('seaborn') fig, ax = plt.subplots() # alpha 是颜色的透明度 ax.plot(dates, highs, c='red', alpha=0.5) ax.plot(dates, lows, c='blue', alpha=0.5) # fill_between 接收x y系列的值并且填充 ax.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1) # 设置图形的格式 plt.title("2018年每日最高温度", fontsize=24) plt.xlabel('', fontsize=16) fig.autofmt_xdate() plt.ylabel("温度 (F)", fontsize=16) plt.tick_params(axis='both', which='major', labelsize=16) # RuntimeWarning: Glyph missing fromcurrent font. font.set_text(s, 0, flags=flags)解决方案 # 警告原因:plt 画图是找不到字体,需要添加两行程序,如下: # 建议放到最后 因为之前使用样式可能设置会被覆盖 plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文标签 plt.rcParams['axes.unicode_minus'] = False plt.show()
import csv from datetime import datetime from matplotlib import pyplot as plt filename = 'data/death_valley_2018_simple.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(reader) # 从文件中获取日期 最高 最低 温度 dates, highs, lows = [], [], [] for row in reader: current_date = datetime.strptime(row[2], '%Y-%m-%d') try: high = int(row[4]) low = int(row[5]) except ValueError: print(f"Missing data for {current_date}") else: dates.append(current_date) highs.append(high) lows.append(low) # 最高温度和最低温度 plt.style.use('seaborn') fig, ax = plt.subplots() ax.plot(dates, highs, c='red', alpha=0.5) ax.plot(dates, lows, c='blue', alpha=0.5) plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1) # Format plot. title = "2018年每日最高温度和最低温度 \n 美国加利福尼亚州死亡谷" plt.title(title, fontsize=20) plt.xlabel('', fontsize=16) fig.autofmt_xdate() plt.ylabel("温度 (F)", fontsize=16) plt.tick_params(axis='both', which='major', labelsize=16) plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文标签 plt.rcParams['axes.unicode_minus'] = False plt.show()
处理CVS文件
import json filename = 'data/eq_data_30_day_m1.json' with open(filename) as f: all_eq_data = json.load(f) all_eq_dicts = all_eq_data['features'] mags, titles, lons, lats = [], [], [], [] for eq_dict in all_eq_dicts: mag = eq_dict['properties']['mag'] title = eq_dict['properties']['title'] lon = eq_dict['geometry']['coordinates'][0] lat = eq_dict['geometry']['coordinates'][1] mags.append(mag) titles.append(title) lons.append(lon) lats.append(lat) if __name__ == '__main__': print(mags[:5]) print(titles[:5]) print(lons[:5]) print(lats[:5])
import json import plotly.express as px import pandas as pd filename = 'data/eq_data_30_day_m1.json' with open(filename) as f: all_eq_data = json.load(f) all_eq_dicts = all_eq_data['features'] mags, titles, lons, lats = [], [], [], [] for eq_dict in all_eq_dicts: mag = eq_dict['properties']['mag'] title = eq_dict['properties']['title'] lon = eq_dict['geometry']['coordinates'][0] lat = eq_dict['geometry']['coordinates'][1] mags.append(mag) titles.append(title) lons.append(lon) lats.append(lat) data = pd.DataFrame( data=zip(lons, lats, titles, mags), columns=['经度', '纬度', '位置', '震级'] ) data.head() fig = px.scatter( data, x='经度', y='纬度', range_x=[-200, 200], range_y=[-90, 90], width=800, height=800, title='全球地震散点图', size='震级', size_max=10, color='震级', hover_name='位置', ) fig.write_html('global_earthquakes.html') fig.show() # if __name__ == '__main__': # print(mags[:5]) # print(title[:5]) # print(lons[:5]) # print(lats[:5])
处理json文件 并且绘制散点图
有其他语言基础学习很简单