ملف:Stock-indices-2020crash+recovery.svg

محتويات الصفحة غير مدعومة بلغات أخرى.
من ويكيبيديا، الموسوعة الحرة

الملف الأصلي(ملف SVG، أبعاده 504 × 378 بكسل، حجم الملف: 177 كيلوبايت)

ملخص

الوصف
English: Stock index chart of 2020 with stock market crash
التاريخ
المصدر عمل شخصي
المؤلف Geek3
SVG منشأ الملف
InfoField
 
الشيفرة المصدرية لهذا الرسم المتجه صالحة.
 
هذا الرسم المتجهي أُنشئ بواسطة 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:ar:مشاع إبداعي
نسب العمل إلى مُؤَلِّفه الإلزام بترخيص المُشتقات بالمثل
يحقُّ لك:
  • مشاركة العمل – نسخ العمل وتوزيعه وبثُّه
  • إعادة إنتاج العمل – تعديل العمل
حسب الشروط التالية:
  • نسب العمل إلى مُؤَلِّفه – يلزم نسب العمل إلى مُؤَلِّفه بشكل مناسب وتوفير رابط للرخصة وتحديد ما إذا أجريت تغييرات. بالإمكان القيام بذلك بأية طريقة معقولة، ولكن ليس بأية طريقة تشير إلى أن المرخِّص يوافقك على الاستعمال.
  • الإلزام بترخيص المُشتقات بالمثل – إذا أعدت إنتاج المواد أو غيرت فيها، فيلزم أن تنشر مساهماتك المُشتقَّة عن الأصل تحت ترخيص الأصل نفسه أو تحت ترخيص مُتوافِقٍ معه.

الشروحات

أضف شرحاً من سطر واحد لما يُمثِّله هذا الملف

العناصر المصورة في هذا الملف

يُصوِّر

١ يناير 2021

تاريخ الملف

اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.

زمن/تاريخصورة مصغرةالأبعادمستخدمتعليق
حالي15:15، 1 يناير 2021تصغير للنسخة بتاريخ 15:15، 1 يناير 2021504 × 378 (177 كيلوبايت)Geek3Uploaded own work with UploadWizard

الصفحة التالية تستخدم هذا الملف:

الاستخدام العالمي للملف

الويكيات الأخرى التالية تستخدم هذا الملف:

بيانات وصفية