Fail:Stock-indices-2020crash.svg

Fail asli(Fail SVG, ukuran dasar 504 × 378 piksel, saiz fail: 79 KB)

Fail ini dari Wikimedia Commons dan mungkin digunakan oleh projek lain. Penerangan pada laman penerangan failnya di sana ditunjukkan di bawah.

Ringkasan

Keterangan
English: Stock index chart at the 2020 stock market crash
Tarikh
Sumber Karya sendiri
Pengarang Geek3
SVG genesis
InfoField
 
The SVG code is valid.
 
This plot was created with Matplotlib.
Kod sumber
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, 4, 6))
    
    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
        return v / max(v)

# 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')

ax.xaxis.set_major_locator(mpl.dates.MonthLocator())
ax.xaxis.set_major_formatter(mpl.dates.DateFormatter("%Y-%m"))
ax.yaxis.set_major_formatter(mpl.ticker.FormatStrFormatter('%.0f%%'))

plt.axvline(datetime.datetime(2020, 3, 9), color='k')
ax.text(datetime.datetime(2020, 3, 9), 0.64, 'BMI', fontsize=11, ha='left', va='bottom',
    transform=mpl.transforms.blended_transform_factory(ax.transData, ax.transAxes))
ax.text(datetime.datetime(2020, 3, 16), 0.51, 'BMII', fontsize=11, ha='left', va='bottom',
    transform=mpl.transforms.blended_transform_factory(ax.transData, ax.transAxes))
plt.axvline(datetime.datetime(2020, 3, 16), color='k')

plt.xlabel('date')
plt.ylabel('value relative to 2020 maximum')
plt.grid(True)
plt.legend(loc='center left', framealpha=1, edgecolor='k', borderpad=0.7, borderaxespad=2)
plt.tight_layout()
plt.savefig('stock-indices-2020crash.svg')
plt.show()

Perlesenan

Dengan ini, saya selaku pemegang hak cipta karya ini, menerbitkannya di bawah lesen yang berikut:
w:ms:Creative Commons
pengiktirafan perkongsian serupa
Anda bebas:
  • untuk berkongsi – untuk menyalin, mengedar dan memindah hasil kerja
  • untuk mencampur semula – untuk menyesuaikan karya
Di bawah syarat berikut:
  • pengiktirafan – Anda mesti memberi penghargaan yang berpatutan, bekalkan pautan ke lesen, dan tunjukkan jika perubahan telah dibuat. Anda boleh lakukannya dalam sebarang cara yang munasabah, tetapi bukan dalam sebarang cara yang mencadangkan pemberi lesen mengendors anda atau penggunaan anda.
  • perkongsian serupa – Jika anda mengubah, adun semula, atau menokok tambah bahan, anda mesti menyebarkan sumbangan anda di bawah lesen yang sama atau serasi dengan yang asal.

Captions

Add a one-line explanation of what this file represents
Stock index chart at the 2020 stock market crash

Items portrayed in this file

menggambarkan

7 April 2020

media type Inggeris

image/svg+xml

Sejarah fail

Klik pada tarikh/waktu untuk melihat rupa fail tersebut pada waktu itu.

Tarikh/WaktuGambar kenitUkuranPenggunaKomen
semasa11:48, 7 April 2020Gambar kenit bagi versi pada 11:48, 7 April 2020504 × 378 (79 KB)Geek3Uploaded own work with UploadWizard

Laman berikut menggunakan fail ini:

Penggunaan fail sejagat

Fail ini digunakan oleh wiki-wiki lain yang berikut:

Metadata