Файл:Stock-indices-2020crash+recovery.svg

Исходный файл(SVG-файл, номинально 504 × 378 пкс, размер файла: 177 КБ)

Краткое описание

Описание
English: Stock index chart of 2020 with stock market crash
Дата
Источник Собственная работа
Автор Geek3
SVG‑разработка
InfoField
 
Исходный код этого SVG-файла корректен.
 
Это plot было создано с помощью Matplotlib
Исходный код
InfoField

Python code

#!/usr/bin/python3 # -*- coding: utf8 -*-  import csv import datetime import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np  class Stock:     def __init__(self, name):         self.data = self.get_csv(name)         self.convert_types()         self.filter_date(datetime.datetime(2020, 1, 1), datetime.datetime(2020, 12, 31))          def get_csv(self, name):         try:             with open(name, 'r' ) as f:                 reader = csv.DictReader(f)                 return [line for line in reader]         except FileNotFoundError as ex:             print(ex)             print('get data from', 'https://finance.yahoo.com/quote/DAX/history?p=DAX')             exit()          def convert_types(self):         for il, l in enumerate(self.data):             for k in l.keys():                 try:                     if k == 'Date':                         l[k] = datetime.datetime.strptime(l[k], '%Y-%m-%d')                     else:                         l[k] = float(l[k])                 except Exception:                     del self.data[il]          def filter_date(self, date, date2=None):         self.data = [i for i in self.data if i['Date'] >= date]         if date2 is not None:             self.data = [i for i in self.data if i['Date'] <= date2]          def get_dates(self):         return [l['Date'] for l in self.data]          def get_values(self):         return np.array([float(l['Close']) for l in self.data])          def get_values_norm(self):         v = self.get_values()         #vmean = np.mean([v for i, v in enumerate(v) if self.data[i]['Date'].month == 1])         #return v / vmean         # v / max(v)         return v / max([v for i, v in enumerate(v) if self.data[i]['Date'].month < 4])   # data is found on finance.yahoo.com data_spx = Stock('^GSPC.csv') data_DJI = Stock('^DJI.csv') data_stoxx50e = Stock('^STOXX50E.csv') data_DAX = Stock('^GDAXI.csv')  plt.figure(figsize=[5.6, 4.2]) ax = plt.gca() ax.set_prop_cycle(color=['#0072bd', '#d95319', '#edb120', '#7e2f8e'])  plt.plot(data_spx.get_dates(), 100*data_spx.get_values_norm(), 'o-', ms=3, label='S&P 500') plt.plot(data_DJI.get_dates(), 100*data_DJI.get_values_norm(), 'o-', ms=3, label='Dow Jones') plt.plot(data_stoxx50e.get_dates(), 100*data_stoxx50e.get_values_norm(), 'o-', ms=3, label='EURO STOXX 50') plt.plot(data_DAX.get_dates(), 100*data_DAX.get_values_norm(), 'o-', ms=3, label='DAX')  plt.xlim(datetime.datetime.strptime('2019-12-24', '%Y-%m-%d'),          datetime.datetime.strptime('2021-01-08', '%Y-%m-%d')) ax.tick_params(axis='x', which='minor', pad=6) ax.xaxis.set_major_locator(mpl.dates.MonthLocator()) ax.xaxis.set_major_formatter(mpl.ticker.NullFormatter()) ax.xaxis.set_minor_formatter(mpl.dates.DateFormatter("%m")) ax.xaxis.set_minor_locator(mpl.dates.MonthLocator(bymonthday=16)) ax.yaxis.set_major_formatter(mpl.ticker.FormatStrFormatter('%.0f%%'))  for tick in ax.xaxis.get_minor_ticks():     tick.tick1line.set_markersize(0)     tick.tick2line.set_markersize(0)     tick.label1.set_horizontalalignment('center')  plt.xlabel('date (month 2020)') plt.ylabel('value relative to 2020 pre-crash maximum') plt.grid(True) plt.legend(loc='lower right', framealpha=1, edgecolor='k', borderpad=0.7, borderaxespad=0.6) plt.tight_layout() plt.savefig('stock-indices-2020crash+recovery.svg') 

Лицензирование

Я, владелец авторских прав на это произведение, добровольно публикую его на условиях следующей лицензии:
w:ru:Creative Commons
атрибуция распространение на тех же условиях
Этот файл доступен по лицензии Creative Commons Attribution-Share Alike 4.0 International
Вы можете свободно:
  • делиться произведением – копировать, распространять и передавать данное произведение
  • создавать производные – переделывать данное произведение
При соблюдении следующих условий:
  • атрибуция – Вы должны указать авторство, предоставить ссылку на лицензию и указать, внёс ли автор какие-либо изменения. Это можно сделать любым разумным способом, но не создавая впечатление, что лицензиат поддерживает вас или использование вами данного произведения.
  • распространение на тех же условиях – Если вы изменяете, преобразуете или создаёте иное произведение на основе данного, то обязаны использовать лицензию исходного произведения или лицензию, совместимую с исходной.

Краткие подписи

Добавьте однострочное описание того, что собой представляет этот файл

Элементы, изображённые на этом файле

изображённый объект

У этого свойства есть некоторое значение без элемента в

image/svg+xml

История файла

Нажмите на дату/время, чтобы посмотреть файл, который был загружен в тот момент.

Дата/времяМиниатюраРазмерыУчастникПримечание
текущий15:15, 1 января 2021Миниатюра для версии от 15:15, 1 января 2021504 × 378 (177 КБ)Geek3Uploaded own work with UploadWizard

Следующая страница использует этот файл:

Глобальное использование файла

Данный файл используется в следующих вики:

Метаданные