Uyqu va salomatlik

Oylar bo'yicha statistika. Odamlar kunlarining statistikasi. Rossiyada oylar bo'yicha o'lim

Teri chetining ko'rinishi muhim ahamiyatga ega. Agar kuchlarning hurmati past bo'lsa, mintaqaning hududiy yaxlitligiga tahdid paydo bo'ladi. Millatning yuqoriligi va kamayishi millatning saqlanishini kafolatlaydi. Aholi statistikasi zarur ko'rsatkichlarni aniqlash imkonini beradi.

Mashhurlik ham mintaqa mintaqasining belgisidir. Kambag'al mamlakatlarda, odamlar o'z kichkintoylaridan voz kechsa, hurmat baland, dunyoda bolalar kam. Yashash uchun yaxshi aqli bor aybdor mamlakatlarda aholi bir guruh bolalarni chaynashdan qo'rqmaydi.

Rossiya Federatsiyasi aholisining dinamikasi

Jadvalda Rossiya aholisi bo'yicha statistik ma'lumotlar keltirilgan. Bu aholining tabiiy o'sishi qanday o'zgarganligi haqida eslatma bo'lishi mumkin:


Rik Turmush qurgan bolalar soni Jami aholi soni
1927 4 688 000 94 596 000
1939 4 329 000 108 785 000
1950 2 859 000 102 833 000
1960 2 782 353 119 906 000
1970 1 903 713 130 252 000
1980 2 202 779 138 483 00
1990 1 988 858 148 273 746
2000 1 266 800 146 303 611
2010 1 788 948 142 865 433
2015 1 940 579 146 544 710
2016 1 888 729 146 804 372

Bolalarning qaysi maqomi muhimroq ekanligini tushunish uchun bu erda o'g'il bolalar va qizlarning statistik ma'lumotlari keltirilgan. Keling, Novopolotsk shahri atrofidagi ko'rgazmalarni ko'rib chiqaylik. 2014-yilda besh yuzga yaqin qiz bola va ehtimol olti yuz nafar inson bolasi dunyoga keldi. 2015-yilda 595 o‘g‘il va 537 qiz tug‘ildi. Boshqa aholi punktlari uchun marshrut taxminan bir xil.

Qizlar populyatsiyasi statistikasi O'g'il bolalar esa insoniy maqom haqida gapira olmaydiganlar haqida gapirishadi, dunyoda ko'proq paydo bo'ladi.

  1. Chechen Respublikasi.
  2. Ingushetiya.
  3. Yamalo-Nenets avtonom okrugi.

May oyidagi eng yirik eksponentlar:

  1. Tyumen viloyati
  2. Lvov viloyati
  3. Lvov viloyati

O'lim soni 2016 yilda Rossiyada aholi statistik ma'lumotlaridan oshmaganidan qat'i nazar, o'lim soni o'zgarishda davom etmoqda. Buning ostida davlatda hurmat darajasi yuqori edi. Aholining 10 yildagi statistikasi shuni ko'rsatadiki, Rossiya aholining tabiiy o'sishi bo'yicha dunyoda 63-o'rinni egallagan (2016 yil ma'lumotlari). Jadvalda ruslarning o'limining asosiy sabablari ko'rsatilgan (hozirdan 2016 yil o'rtalarigacha):

Jismoniy shaxslar soni (minglab)
716,7
198,2
13,5
5,7
16,3
7,2
infektsiya21,8

2016 yildagi aholi statistikasi shuni ko'rsatadiki, Rossiya Federatsiyasi aholisi 1 km² ga 8,6 kishini tashkil qiladi. Bu dunyodagi eng past ko'rsatkichlardan biridir. Katta hududlar shunchaki bo'sh. So'nggi 20 yil ichida qishloqlar va kichik joylar yo'q bo'lib ketdi va qishloqlarda hech qachon aholi yashamadi.

2017 yil boshidagi dunyodagi vaziyat

2017-yilning birinchi choragidagi statistik ma’lumotlarga ko‘ra, dunyo aholisi 50 million kishiga ko‘paygan. Bugungi kunda dunyoda yuz minglab chaqaloqlar bor. E Bu haqiqatni rejimdagi insoniyat shifokori tasdiqlashi mumkin.

Rossiyada 2017 yil uchun aholi va o'lim darajasi

Rossiya har doim dunyodagi eng yirik hududiy kuch bo'lib kelgan. Bu yerda aholi tez kamayib bormoqda. Mamlakat demografik inqirozni boshidan kechirmoqda. 2017 yil boshida Rossiyada aholi soni bo'yicha statistik ma'lumotlarga ko'ra, o'tmishdagiga qaraganda kamroq bolalar tug'ilgan.

Belarus va Ukrainada aholining o'sishi

Ukrainadagi toshlar aholisining statistikasi:

Rik Turmush qurgan bolalar soni Jami aholi soni
2000 ma'lumotlar yo'q48 663 600
2005 426 100 47 100 462
2010 497 700 45 782 592
2015 411 800 42 759 300

Quyida diagrammasi keltirilgan Ukrainadagi millat statistikasi shuningdek, o'lim ko'rsatkichi (qolgan 25 ta o'lim uchun). Unda aholining qanday o'sishi va qanday kamayishi aniq ko'rsatilgan.

Belorussiya aholisining jinslar bo'yicha statistikasi:

Rik Turmush qurgan bolalar soni Jami aholi soni
2000 93 691 9 988 000
2005 90 508 9 664 000
2010 108 050 9 491 000
2015 119 509 9 481 000

O'g'il bolalar sonining statistikasi Belarus Respublikasida quyidagi grafikdagi raqamlarga qarang. Insonning mavqei ayolnikidan bir oz kattaroq deb aytish mumkin emas. Biroq, yangi turmush qurganlarning soni biroz o'zgargan. Odamlar va ayollar soniga kelsak, Belorussiyadagi odamlar jadvaliga ko'ra, ayollar ko'proq va kamroq.


So'nggi yillarda Rossiya va Ukrainada aholi soni kamaydi, Belorussiyada esa ko'paydi, Rossiyada aholi va o'lim statistikasi bu haqiqatni tasdiqlaydi.

Eksa, tayyor variantni kesib oling: posilannya(https://transfiles.ru/m757t)
Excellence'da siz aqliy formatlash/rang shkalasi orqali ishlashingiz kerak (bu teri turi boshqalardan mustaqil bo'lgan bir qator tayyorgarliklarga ega)
+ butun davr uchun o'rtacha va o'n yilliklar uchun o'rtacha ko'rsatkichdan pastroq qo'shish.

50-60 yil davomida rekord populyatsiya emizikli populyatsiyada, eng past ko'rsatkich esa emizikli populyatsiyada, ajablanarlisi, xuddi shu oylarda kuzatildi. Men ikkita sababni taxmin qilishim mumkin:
a - ko'krakdagi odamlarda, kontseptsiya soati Buyuk Posadga tushdi va Sichnydagi odamlarda - paska va intensiv o't dala robotlari orasidagi intervalda.
b - emizishdan tug'ilgan bolalar tug'ilganda odamlar tomonidan ro'yxatga olingan (ro'yxatga olingan). Bu tendentsiya haqida buvim aytdi (nutqdan oldin, xolamning o'zi buni hozirgi kunga yozib qo'ygan, garchi aslida u ko'krakda tug'ilgan). Biroq, 70-yillarda bu tendentsiya o'zgardi (yoki tendentsiya jinsiy yordamning rivojlanishini kuzata boshladi).

20-asrning ikkinchi yarmida bahor qizg'in pallada edi. Aniqroq qilib aytadigan bo'lsak, 20-asrning o'rtalarida qish-bahor davri bekor qilindi (bahorning boshi va yozning boshi), keyin esa bola tug'ishning bahor-yoz davriga (o'sha paytda) misli ko'rilmagan siljishi yuz berdi. siz yozning oxiriga ko'chdingiz - kuzning boshi - mavsum) vydpustok) - shahar aholisi sonining ko'payishi, mahalliy madaniyatning rivojlanishi va qishloq jamiyatining tanazzulga uchrashi haqida gapirish aniq. Bundan tashqari, 90-yillarning inqirozi ongida bu tendentsiya 20 yoshga to'ldi - bu iqtisodiyotning tanazzulga uchrashini va dachalar / shaharlar / yordamchi hukmronlik kabi madaniy hodisaning keng rivojlanishini ko'rsatishi mumkin (ko'pchilik shahar aholisi 90-yillarda qo'lga kiritgan). ). Nafaqalar endi ta'mirlash (va kontseptsiya) uchun emas, balki sog'lom ovqatlanish uchun oziq-ovqat uchun ishlatilgan.

21-asrning boshidan boshlab bolalarning o'sishi keskin keyingi davrga siljidi va joy almashish yanada keskinroq va kuchliroq bo'ldi (ehtimol, burchakda). 00-yillarning o'rtalaridan boshlab, bola tug'ishning ahamiyati yoz-kuzga aylandi. Keyin kontseptsiya kuz-qish oylariga (ertadan hozirgi kungacha) o'tdi. Agar bu statistik ma'lumotlarning isboti bo'lmasa, unda yaxshi rasm paydo bo'ladi. Eng qorong'u va eng sovuq oylar eng issiq oyga aylandi, unda odamlar uyda qolishga va tom ma'noda uyda qolishga harakat qilishadi.

Nega men rasmni Tsikava deb atadim? O'ng tomonda yorug'lik dunyosida rivojlanish (ko'chada va uyda) va uyqusizlik davrining keyingi davrga o'tishi (odamlar yotishadi va keyinroq chiqishadi) - bolalarning kontseptsiyasi asta-sekin bo'ladi. o'zgartirish Qorong'ida ovqatlanish vaqti keldi. Boshqacha qilib aytganda, agar elektrchilar bo'lmasa (yoki ular ularga g'amxo'rlik qilmoqchi bo'lsa), bolalar o't-ohakda tug'ilgan va kvartiralarda (va ko'chalarda) yorug'lik doimiy ravishda yoqilgan bo'lsa (Moskva hech qachon uxlamaydi) ) - bolalar o't chaqaloqda homilador bo'lishdi. Taxminan aytadigan bo'lsak, bolalar bilan yorug'likda ishlash yaxshiroqdir (va zulmatda siz sog'inishingiz mumkin).

Rossiya Federatsiyasi Sog'liqni saqlash vazirligi ma'lumotlariga asoslanib, Federal Davlat statistika xizmati (Rosstat) Rossiyada o'lim bo'yicha statistik ma'lumotlarni to'playdi. Statistik ma'lumotlar ommaga ochiq bo'lib, ulardan Rossiyadagi o'lim sabablari, shuningdek, Rossiya va boshqa hududlarda demografik ko'rsatkichlar qanday o'zgarib borayotgani haqida barcha kerakli ma'lumotlarni olish mumkin.

Rossiyada o'lim statistikasi tahlili bilan quyidagi hisobotda tanishishingiz mumkin.

Rossiyada o'lim sabablari

2016 yilda Rossiyada o'limning asosiy sabablari.

2016 yilda 1 891 015 rossiyalik vafot etdi.

    O'limning eng ko'p uchraydigan sabablari quyidagilar edi: qon aylanish tizimi kasalliklari - 904 055 o'lim, yurak ishemik kasalligi 481 780 kishi o'limga olib keldi.

    Rossiyada o'limning yana bir asosiy sababi zararli amaliyotlardir - bu kasalliklar guruhidan 295 729 kishi vafot etgan.

    O'limning uchinchi asosiy sababi "o'limning tashqi sabablari" deb ataladi. Bu toifaga baxtsiz hodisalar, kaltaklash, o'z joniga qasd qilish, o'limga olib keladigan jarohatlar va boshqalar kiradi. 167 543 kishi turli sabablarga ko'ra vafot etgan.

    O'limning eng ko'p uchraydigan sabablari - yo'l-transport hodisalari (15 854), alkogolizm (14 021) va o'z joniga qasd qilish (23 119).

    Spirtli ichimliklarga qaramlik ham Rossiyada o'limning asosiy sababidir - 56 283 kishi spirtli ichimliklar va spirtli ichimliklarni haddan tashqari iste'mol qilish natijasida kelib chiqqan kasalliklardan vafot etgan.

Bu davrda 1 107 443 rossiyalik vafot etdi.

2016 va 2017 yillar uchun qiyosiy statistika

2016 va 2017 yillardagi statistik ma'lumotlarning yangilanishi Rossiyada o'lim sabablari qanday o'zgarib borayotganini aniqlash imkonini beradi. Bugungi kunga kelib, 2017 yil uchun eng so'nggi kunlik statistik ma'lumotlar 2016 va 2017 yilning birinchi yarmidagi ma'lumotlarga teng.

Qayd etish mumkinki, bugungi kundan o‘tgan asrning oxirigacha bo‘lgan davrda o‘lganlar soni 23 668 kishiga kamaygan. Kasallikdan vafot etgan qon aylanish tizimlari soni 17 821 kishiga kamayganidan qat'i nazar, o'limning bu sababi endi asosiy va ahamiyatli emas - davr mobaynida 513 432 o'lim. O‘limning tashqi sabablari qurboni bo‘lganlar soni sezilarli darajada kamaydi – jarohatlar va jarohatlar 2016 yilning birinchi yarmida 80 516 kishining o‘limiga sabab bo‘ldi. 2017 yilning birinchi choragida 90 214 taga nisbatan. Shuni ta'kidlash kerakki, bu raqamlar oldinda va haqiqiy daryo statistikasi kamroq optimistik bo'lishi mumkin.

Rossiyada toshlar ortida o'lim

Vaziyat 2017 yilda albatta yaxshilanishiga qaramay, kompaniya bu qiyin jarayonning merosi ekanligini hisobga olib, optimistik ko'rinadi. 1995 yildan 2005 yilgacha bo'lgan davrda o'lim darajasi 2,2 milliondan 2,36 million kishigacha o'zgargan. 2006 yildan boshlab o'lganlar sonining kamayishi kutilmoqda. Shunday qilib, 2005 yilda 2 303 935 kishi vafot etgan bo'lsa, 2006 yilda bu ko'rsatkich 2 166 703 kishiga, 2011 yilda esa bir soatdan ko'proq vaqt ichida bu ko'rsatkich 2 millionga kamaydi. U 2013 va 2014 bet. O'lganlar soni 1,871,809 dan 1,912,347 gacha ko'tarilgan bo'lsa-da, birinchi marta aholi o'sishi o'limdan yuqori bo'ldi. 2014 yildagi sakrashdan so'ng, Rossiyada o'lim statistikasi 2015 va 2016 yillardagi raqamlar, shuningdek, 2017 yilgi oldingi ma'lumotlardan ko'rinib turibdiki, pasayishda davom etdi. Afsuski, Rossiyada o'limning kamayishi ko'plab sabablarga ko'ra, jumladan, o'tmishda mintaqaning yozgi aholisi orasida o'lim darajasi yuqori. Pensiya yoshidagi odamlar Rossiyada o'lganlar orasida eng katta demografik guruhdir.

Rossiyada oylar bo'yicha o'lim

Rossiyada 2006 yildan 2015 yilgacha bo'lgan o'n yil davomida oylik o'lim bo'yicha statistik ma'lumotlarning tahlili eng ko'p o'limlar qaysi oylarda sodir bo'lishini aniqlash imkonini beradi. So'nggi bir necha oy ichida eng yuqori o'lim darajasi Sichni shahrida bo'ldi - o'limning o'rtacha 9,15%. Bunday holda, statistik ma'lumotlardagi noaniqliklarni tuzatish juda muhim - ko'krak qafasida sodir bo'lgan ko'plab o'limlar ko'krak qafasidan hozirgi kungacha "ko'chirilgan". Ko'p odamlar qayin va o'tlarda o'lishadi - o'rtacha daryo o'limining 8,81% va 8,53%. Eng "xavfsiz" fasllar bahor va barglarning tushishi - daryoda o'limning umumiy sonining 7,85% va 7,89% xuddi shu oyga to'g'ri keladi.

Bir necha kun oldin The Daily Viz blogi ma'lumotlarning oddiy va samarali vizualizatsiyasi misoli sifatida keng tarqalishni hurmat qilgan yozuvni e'lon qildi.

Vizualizatsiya taqvim ko'rinishida issiqlik xaritasi sifatida amalga oshirilgan odamlar kunlarining mashhurligi xaritasi edi. Raqamlar vertikal ravishda, oylar gorizontal ravishda ko'rsatildi va bu oddiy jadvalga qarab, biz har bir kunning oilada bolalar tug'ilishi nuqtai nazaridan qanchalik mashhurligini bir qarashda hukm qilishimiz mumkin edi.

O'nlab soat o'tgach, vizualizatsiya muallifi xuddi shu blogdan yana bir postni e'lon qildi, u Ummonga spilnotni kiritganlar, chiqish ma'lumotlarini, tasvirlar ustida ishlashda vikoristanni to'g'ri izohlamaganlar uchun g'alaba qozondi. Muammo shundaki, nashr etilgan ma'lumotlar to'plamida o'sha kuni tug'ilgan odamlarning haqiqiy soni haqida ma'lumot yo'q edi. Ma'lumot boshqacha tarzda berilgan - o'sha kun odamlar kunlarining mashhurlik reytingida qaysi o'rinda (darajada) joylashgan.

Shunday qilib, reytingdagi birinchi va boshqa o'rinlar o'rtasidagi farq juda katta bo'lishi mumkin (aytaylik, ikki marta), aks holda hidlar bir ohangda farq qiladi. Boshqacha qilib aytadigan bo'lsak, vizualizatsiya haqiqiy ma'lumotni haqiqiy ma'lumotlar o'rnini bosadiganlar orqali aks ettirmadi.

Ushbu muammo haqida bir oz o'ylab, men boshidan oxirigacha, ya'ni ma'lumot to'plashdan tortib, tasvirni tasvirlashgacha bo'lgan bunday vizualizatsiyani yaratishning kuchli qismini tasvirlashga qaror qildim. Bu dumba yaxshi, chunki, bir tomondan, bu juda oddiy, boshqa tomondan, bu ajoyib natijaga ega to'liq yakunlangan loyihadir.

Barcha operatsiyalar uchun men bunday vazifalar uchun an'anaviy ravishda qo'llaniladigan Processing o'rta dasturidan foydalandim (asbob tanlash muammosiga to'xtalmaslik kerak).

Shuningdek, loyiha ustida ishlash jarayoni barqaror tuzilishga ega va uch bosqichdan iborat:
ma'lumotlarni yig'ish > ma'lumotlarni saralash > ma'lumotlarni vizualizatsiya qilish

Tuzilishi meros qilib olinadi.

1. Ma'lumotlarni yig'ish

Ma'lumotlar vk.com ijtimoiy tarmoq buxgalterlarining profillaridan olinadi. Yaxshiyamki, biz uchun ushbu API usullari shaxsiydir va dasturlar tomonidan avtorizatsiyani talab qilmaydi, bu muammoni sezilarli darajada soddalashtiradi.

Men ushbu 100 000 profil odamlarning taqvimdagi kunlarini taqsimlashda vaqti-vaqti bilan turli xillikni bartaraf etish va asosiy tendentsiyalarni aniqlash uchun etarli bo'lishini aniqladim. Tim kam emas, vaqt va demoni tejash uchun biz 10 000 ta yozuvni to'playmiz. Keyinchalik biz dasturga kerakli darajada ko'proq profil qo'shishimiz mumkin bo'ladi.

Biz asosiy funksiya atrofida dasturlar yozamiz sozlash; o'rnatish(). Funktsiya chizish() Bu bizga kerak emas, chunki dastur animatsiya emas, balki statik tasvirlarni yaratadi. Qayta ishlash dasturining hisoboti va tuzilishini loyiha veb-saytida topish mumkin. Foydalanilgan barcha funktsiyalarning tavsifi va mukammal sintaksis qo'llanmasi mavjud.

Bundan tashqari, biz ma'lumotlarni to'playdigan va to'playdigan dasturni yoza olmaymiz: ma'lumotlarni to'playdi, ularni qayta ishlaydi va vizualizatsiya yaratadi. Keling, "fil" ni bir nechta modullarga ajratamiz, shunda uni qayta ishlash osonroq bo'ladi va echimlarni yaratish va amalga oshirish uchun bir soatdan kamroq vaqt sarflaydi. Ya'ni, ma'lumotlarni to'playdigan va undan qo'shimcha ma'lumotlarni to'playdigan dasturni yozishdan boshlaylik. Keyin biz saqlangan to'plangan ma'lumotlarga asoslanib, kerakli tasvirlarni yaratadigan dastur yozamiz.

Mayli, keling, bo'sh joy yozamiz va uni dasturga tayyorlaymiz.

Void setup() ( //bizning asosiy funktsiyamiz exit(); //dasturlardan chiqish)

Endi VK API qanday ishlashini aniqlaylik. Biz so'rovimiz parametrlarini o'z ichiga olgan maxsus URL orqali server bilan bog'lanamiz:

http://api.vk.com/method/users.get.xml/uids=(bu erda biz bilan bog'lanish uchun identifikatorlar ro'yxati koristuvachlar kimlar orqali)&fields=(bu erda bizni tsikavlyat qilish uchun nomlar ro'yxati koristuvach profili maydonlari. )

Agar metod nomini .xml holda yozadigan bo'lsak, serverdan javob JSON formatidagi qatorga o'xshaydi. Bu variantlardan biri, ammo bu ilovada biz XML dan foydalanamiz. Biz vkontakte asoschisi Pavel Durovning akkauntidagi ma'lumotlarni o'chirib tashlamoqchimiz. Bizning manzillarimiz:

http://api.vk.com/method/users.get.xml?uids=1&fields=bdate

Mening profil identifikatorim 1, shuning uchun biz uchun maydon Milliy kun - bu deyiladi sana.

Keling, ushbu profil haqida ma'lumot olishga harakat qilaylik. Vikorist tomonidan kiritilgan funksiya loadStrings(), bu parametr kontekstida bizni bosish uchun fayl manzili bilan bir qatorni oladi va fayl o'rniga qatorlar qatorini aylantiradi.

Void setup() ( String user = loadStrings("http://api.vk.com/method/users.get.xml?uids=1&fields=bdate"); // biz println(user); // ko'rsatilgan Buning o'rniga massiv (server chiqishi) konsolidan exit(); //dasturlardan chiqish)

Dasturni konsolda ishga tushirgandan so'ng, bizning server chiqishi paydo bo'ladi:

"" "" " " " 1" " Pavlo" " Durov" " 10.10.1984" " " ""

Kvadrat qatordagi raqamlar massivning rekord raqamini (indeksini) bildiradi va massivga aloqasi yo'q. Panjaning yonidagi qator xonalari ham teridan tozalanadi. Vlasne, panjalar orasida bo'lganlar o'rniga bizniki. Bizni dalada belgilang

(Qator). Mana, bizni iqtibos qilish uchun ma'lumot - Koristuvachning 1-sonli tug'ilgan kuni oqilona formatda: 1984 yil 10-oyning 10-kuni (Tong).

Uyga kelib, odamlardan 10 ming xurmo terib oldik. Biz nimadan qo'rqamiz? Biz mijoz identifikatorlarini 1 dan kerakli raqamgacha saralaymiz. Muammo shundaki, barcha identifikatorlarda ishlaydigan profillar mavjud emas va barcha hisoblar ularning tug'ilgan kunini ko'rsatmaydi. Shunday qilib, bizga ikkita shifokor kerak: birinchi shifokor koristuvachlarning identifikatorini tartibda tiklaydi, ikkinchisi esa biz to'g'ri to'plangan qancha xurmoni hisobga oladi, shunda biz darhol to'xtashimiz mumkin. Aslida, 10 000 xurmo olish uchun siz 15 000 ga yaqin bulutli yozuvlarni saralashingiz kerak.

Biz tsiklni yozamiz:

Void setup() ( int count = 0; // serverga muvaffaqiyatli omon qolganlarni davolovchi (int i = 1; count)<= 10000; i++) { //перебираем id, не останавливаемся, пока счетчик успешных обращений меньше или равен 10000 String user = loadStrings("http://api.vk.com/method/users.get.xml?uids=" + str(i) + "&fields=bdate"); //загружаем информацию, подставляя счетчик на место id for (int j = 0; j < user.length; j++) { //перебираем все строки ответа if (user[j].indexOf("") != -1) ( // maydonini qanday joylashtirish kerak println(i + "\t" + count + "\t" + user[j]); // konsolda ma'lumotlar count++ ko'rsatiladi; // ko'proq muvaffaqiyat uchun davolash 1)))) exit(); //dasturlardan ko'rinadigan)

Shifokorning ahamiyatini hurmat qiling i, biz uni qatorga qo'yganimizda, u funksiya tomonidan faollashtiriladi str(). Bu ma'lumotlar turini raqamlardan qatorlarga aylantirish uchun talab qilinadi. To'g'risini aytganda, dastur biz undan nimani xohlayotganimizni hech qanday operatsiyasiz tushunadi, aniqrog'i, ma'lumotlarni bir turdan ikkinchisiga o'tkazish kabi nutqlarni darhol nazorat qiladi (ba'zi hollarda avtomatik uzatish ishlamaydi ê).

Turlar qatorini takrorlashda biz vikori usulidan foydalanamiz indexOf(), bu usul o'rnatilgunga qadar qatordagi qator parametrida ko'rsatilgan aylanishni aylantiradi. Bizning qatorimizda hech qanday qator-parametr yo'qligi sababli, usul quyida -1 qiymatini aylantiradi va satr bizga kerak yoki yo'qligini tekshirish uchun uni sozlaydi.

Konsolga qo'yishimiz kerak bo'lgan ma'lumotlarni ko'rsatganimizdan so'ng, biz qo'shimcha ma'lumotlarni qo'shamiz: rivojlanishni kuzatib borish uchun shifokorlar stantsiyasi. Ibodatxonalarning turli funktsiyalarining ma'nolari umumlashtiriladi println() yonma-yon ajratilgan "\t" Yorliq belgisi nimani anglatadi?

Agar biz dasturni darhol ishga tushirsak, shifokorlarning qadriyatlari tezda ajralib ketishiga aminmiz. 55 identifikatorni qidirganimdan so'ng, mening tanlovimda 31 dan ortiq sana tanlandi.

Endi hamma narsa yaxshi ishlayotganga o'xshaydi, endi dastur ma'lumotlarni faylga yozib olish haqida tashvishlanishning hojati yo'q. Ushbu ob'ekt kim uchun yaratilgan? PrintWriter. U normal o'zgarish sifatida e'lon qilinadi va shuning uchun funksiyaning qiymati oynaga tayinlanadi. createWriter (faylga yo'l):

PrintWriter p = createWriter("data/bdates.txt");

Bunday holda biz faylni "papka-dasturlar/data/bdates.txt" manziliga bog'lab, "p" ob'ektini chaqiramiz, bu bizga ushbu faylga kerakli narsani yozish imkonini beradi. Yak mi ce robimo? Usul bizning ob'ektimizga qo'llanilishi mumkin println(), bu bitta funktsiya bilan bir xil ishlaydi, faqat u ma'lumotlarni konsolga emas, balki faylga chiqaradi. Bu shunday ko'rinadi:

P.println(berilgan);

Bizning faylimiz bilan ishlaganimizdan so'ng, biz u bilan ishni to'g'ri bajarishimiz kerak, aks holda unga ma'lumot yozilmaydi. Quyidagi kabi eslatma qilishga harakat qiling:

P.flush(); p.close();

Ushbu ikki funktsiya har doim fayl bilan ishni bir vaqtning o'zida to'g'ri bajarish uchun birlashtiriladi. Bizning dasturimiz:

<= 10000; i++) { //перебираем id, не останавливаемся, пока счетчик успешных обращений меньше или равен 10000 String user = loadStrings("http://api.vk.com/method/users.get.xml?uids=" + str(i) + "&fields=bdate"); //загружаем информацию, подставляя счётчик на место id for (int j = 0; j < user.length; j++) { //перебираем все строки ответа if (user[j].indexOf("") != -1) ( //p.println(user[j]) maydonini qanday joylashtirish kerak, shuning uchun biz bosishimiz mumkin; //natijani println(count) fayliga yozamiz; //faylni oynada ko'rsatish taraqqiyot sonini kuzatish uchun konsol++ ; / /muvaffaqiyatni 1 ga oshirish ) ) ) p.flush();p.close(); //fayl bilan ishlashni yakunlash exit(); //dasturlardan chiqish )

Ma'lumot to'plashda biz konsolda qatorning qiymati va shifokor identifikatori ko'rsatilganligini ko'rdik: konsolda juda ko'p ma'lumotlarni ko'rsatish orqali anod robotni dasturlar bilan galvanizatsiya qilishi mumkin, shuning uchun keraksiz narsalar bilan o'ralgan yaxshiroqdir - to'plangan ma'lumotlarning shifokori

Qiziq, yana nima kerak? Siz dasturni boshlashingiz mumkin! Va shunday va yo'q. Masofaviy serverni sinab ko'rayotganda, server mos kelmasa, doimo ehtiyot bo'lishingiz kerak. Biz serverga so'rov yuborganimiz aniq, u tasdiqlash uchun tekshirilgan va uni olib tashlab bo'lmaydi. Taxminan bir soat o'tgach, dastur serverni o'chiradi va shunchaki o'chiriladi. Nima bo'ladi? Aje mi koristuvach haqidagi ma'lumotlarni olib qo'ymadi, massivimiz bo'sh. Agar dastur yana aqldan ozgan bo'lsa, dastur konsolda buzilish haqida xabarni ko'radi va ishdan chiqa boshlaydi. Bu sodir bo'lmasligi yoki bo'lmasligi mumkin, keyin biz dasturni qayta ishga tushirishimiz, tekshirishimiz va server bizning barcha 15 000 so'rovlarimizni tasdiqlashini so'rashimiz kerak.

Ko'r ulushga tayanmaslik uchun, rahm-shafqatni qayta ishlashda topildi. Afv quyidagi yozuv bo'yicha chiqariladi:

Sinab ko'ring ( // bu yerda siz bosishingiz mumkin bo'lgan kod ) catch ( bu erda ogohlantirish turi ) ( // bu erda ogohlantirish aylanganda tanlashingiz mumkin bo'lgan kod )

Afv to'lash dasturi:

Void setup() ( PrintWriter p = createWriter("data/bdates.txt"); //fayldan ma'lumotlarni ko'rsatish uchun ob'ekt int count = 0; //serverga muvaffaqiyatli hisobotlar klinissi (int i = 1; count). )<= 10000; i++) { //перебираем id, не останавливаемся, пока счетчик успешных обращений меньше или равен 10000 String user = loadStrings("http://api.vk.com/method/users.get.xml?uids=" + str(i) + "&fields=bdate"); //загружаем информацию, подставляя счётчик на место id try { for (int j = 0; j < user.length; j++) { //перебираем все строки ответа if (user[j].indexOf("") != -1) ( //p.println(user[j]) maydonini qanday joylashtirish kerak, shuning uchun biz bosishimiz mumkin; //natijani println(count) fayliga yozamiz; //faylni oynada ko'rsatish progress count++ nazorat qilish konsoli ; / /muvaffaqiyatni 1 ga oshirish)))) catch (Istisno e) ()) p.flush();p.close(); //fayl bilan ishlashni yakunlash exit(); //chiqish dasturlari)

Endi, agar massa yuklanganda (massiv bo'sh bo'lsa) maydalagich ishlamay qolsa, kod ko'rsatiladi ... kod ko'rsatilmaydi, dastur maydalagich haqida bildirishnomani ko'rsatadi, lekin chalkashmaslik uchun. Biz shunchaki so'rovni e'tiborsiz qoldiramiz va davom etamiz - biz qilishimiz kerak bo'lgan narsa yana bir firibgardan ma'lumot so'rashdir. Ko'rsatilgan kechirim turi Istisno Bu mukofot yoki g'alaba bo'ladimi, biz "tutib olamiz" degan ma'noni anglatadi. Yozib olish e Kerakli silliqlash turiga qarab, silliqlash haqida ma'lumot yozilishi mumkin bo'lgan dasturni o'zgartirish kerak. Imtiyozlarni tanlashda o'zgarish narxiga ko'tarilishimiz mumkin, ammo norozilik bildirishning hojati yo'q.

2. Ma’lumotlarni saralash

Dastur boshlangandan so'ng har soatda (bir kundan ortiq bo'lmagan qo'ng'iroq qiling) u tugaydi va biz konsolda oxirgi 10 000 raqamini ko'ramiz.Bu to'plangan ma'lumotlarni saralash mumkinligini anglatadi. Faylni matn muharririda oching va bizning harakatlarimiz natijasiga qarang:

Nima bo'ldi? Ha, biz XML teglari yordamida faylga ma'lumotlarni yozib olganimizni unutdik. Hammasi joyida! Har qanday matn muharriri avtomatik tuzatish funktsiyasiga ega, bunga qo'shimcha ravishda siz saqlangan ma'lumotlaringiz faylini tozalashingiz mumkin. To'g'risini aytganda, biz ma'lumotlarni yig'ish bosqichida bo'lgan ilovalarni dasturiy ravishda "qo'lga olishimiz" mumkin edi, ammo printsipial jihatdan soddalik va vaqtni tejash uchun mavjud bo'lgan har qanday vositadan foydalanish unchalik tez bo'lmaydi.

Faylni tozalagandan so'ng uni saqlab, yoping. Endi dasturlarni o'qish osonroq.

3. Ma'lumotlarning vizualizatsiyasi

Va endi kichik narsalarga o'taylik. Hozir biz faylni ochishimiz va shu kuni qancha odam tug'ilganini ko'rishimiz kerak. Eski tanish funksiyadan foydalanib faylni ochish uchun loadStrings(). Buyuk kunda tug'ilgan koristuvachlar sonini tejash uchun biz natural sonlardan foydalanamiz:

Int jadvali = yangi int

Biz massivning o'lchamini 12 dan 31 gacha ko'rsatdik. Hozirda bizda 12 oy va maksimal 31 kun bor. G'oya tufayli 31 tug'ilganda xasislarning aybi yo'q, bizni tanqid qilishda aybimiz yo'q, chunki massiv ko'p oylarga cho'zilgan.

Bizning dasturimiz qanday ishlaydi? Biz sanani olishimiz, qaysi kun va oy ekanligini aniqlashimiz va massivning o'rta qismini bittaga oshirishimiz kerak.

Qatorni kun, oy va taqdir raqamlariga bo'lish uchun biz usuldan foydalanamiz Split(). U qatorlar massivini aylantiradi va argument sifatida qator bo'luvchini oladi: ko'rsatmalar

String s="00010010".split("1");
massivga urildi s ahamiyati
"000" "00" "0"

Bu bizning amaliyotimiz uchun nimani anglatadi? Massiv qatorini olamiz va uni ajratuvchi sifatida nuqta belgisi yordamida ajratamiz. Bitta texnik muammo bor: bron qilish punktining ramzi - har qanday belgining ma'nosi. Shunung uchun "." Argument sifatida biz "\\" dan o'tamiz. - Bu belgi bizga kerak bo'lgan nuqta belgisini bildiradi. Shu tarzda kiriting:

< file.length; i++) { //перебираем все строки файла String date = file[i].split("\\."); //переводим строку в массив, содержащий числа даты } exit(); //выходим из программы }

Endi o'rtada sana oy uchun kun raqami ko'rsatilgan qatorga joylashtiriladi va ichida sana- Oy raqami. Biz massaning og'irligini oshirishga majburmiz stol biri tomonidan:

Jadval++;

Pochta manzilini sana sifatida ko'rsatib, biz qo'shimcha funktsiya yordamida raqamlar qatorini tarjima qilamiz int(), shuningdek, birini olib tashlang. Bittasini olish vaqti keldimi? Keyin massivning o'rtasi noldan boshlanadi. Mi Divzhin 12, Tse Detski, Scho of Success Masiv May, Tummarzi VID 0 dan 11. VIDMINA VID Mysyatsiv, Shcho Numerusu VID 1 dan 12 gacha. Tsu niridpov haqida, nerd bir vaqtning o'zida Pam'yatati emas. .

To'g'rimi? To'g'ri, umuman emas. Agar siz dasturni darhol ishga tushirsangiz, shartnomani ko'rasiz. Haqiqat shundaki, bizning ma'lumotlar to'plamimiz ideal emas. Noma'lum sabablarga ko'ra, ba'zi koristuvachlarda tug'ilgan sana maydonida keraksiz raqamlar mavjud: 666.666 yoki 32/13/888888888. Ba'zan siz tug'ilgan koristuvach tuyg'usini olishingiz mumkin, masalan, minus beshinchi ko'krak. Ularni saralash uchun siz 12 dan katta oy va 31 dan katta kun qiymatlarini, shuningdek nolga teng yoki kichik qiymatlarni qo'shishingiz kerak:

Agar ((int(sana))<= 12) && (int(date) >0) && (int(sana)<= 31) && (int(date) >0)) ( //raqamga kelsak table++; //jadval hajmini 1 ga oshiring)

Men dasturni umumlashtiraman:

Void setup() ( String file = loadStrings("data/bdates.txt"); // ma'lumotlar faylini yuklab oling int table = new int; for (int i = 0; i)< file.length; i++) { //перебираем все строки файла String date = file[i].split("\\."); //переводим строку в массив, содержащий числа даты if ((int(date) <= 12) && (int(date) >0) && (int(sana)<= 31) && (int(date) >0)) ( //raqamlar jadvali bilan hamma narsa tartibda bo'lgani uchun++; //jadval hajmini 1 ga oshirish)) exit(); //dasturlardan ko'rinadigan)

Endi, agar ma'lumotlar to'plangan va dastur xotirasida saqlangan bo'lsa, siz ijodiy - rasm chizishni boshlashingiz mumkin. Birinchidan, bu biz bo'yalgan rangga bog'liq: men korporativ ko'k rangni oldim VK: RGB 54, 99, 142. Keling, uchta maxfiy raqamni yozmaslik uchun rangni o'zgartiraylik:

Rang c = rang (54, 99, 142);

Bizga (an'anaga ko'ra, dasturning boshida) rasmimiz qanday kenglik va balandlik bo'lishini aniqlashimiz kerak. Buning uchun biz funktsiyani yozamiz:

Hajmi (kenglik, balandlik);

Bizning kengligimiz va balandligimiz qanday bo'ladi? Faraz qilaylik, issiqlik xaritasining o'rtasi kengligi 40 piksel va o'rtalar orasidagi bo'shliq uchun bir piksel bo'ladi. Oylar kenglikda joylashtirilgan. Chet chegarasi (10 piksel) haqida unutmang. 20+41*12 kiriting. Agar siz ongingiz bilan aralashishni yoki kalkulyator dasturini ochishni xohlamasangiz, buni oddiygina funktsiyaga argument sifatida yozishingiz mumkin. println(20+41*12); Va chiqishni tanlang - 512. Bu tasvirning kengligi. Balandlikni o'rtada 20 pikselga va chetida bir xil chekkaga moslash orqali tanlang:

Hajmi (512, 671);

Endi tezda jamoani tartibga keltiraylik Chiqish(); dastur oxirida dasturni tugatgandan keyin chiqmasligimiz uchun va quyidagi kodni ishga tushiring:

< file.length; i++) { //перебираем все строки файла String date = file[i].split("\\."); //переводим строку в массив, содержащий числа даты if ((int(date) <= 12) && (int(date) >0) && (int(sana)<= 31) && (int(date) >0)) ( //jadval++dagi hamma narsa raqamga asoslangan; //jadval hajmini 1 ga oshirish) ) rang c = rang(54, 99, 142); // Rang)

Ramka o'lchamini ko'rsatgandan so'ng, men oq fonni o'rnatish buyrug'ini berdim: agar rangni bitta raqam bilan ko'rsatsak, u 0 (qora) dan 255 (oq) gacha bo'lgan kulrang soyalar sifatida tan olinadi. Dasturni ishga tushirganingizda, bizga kerak bo'lgan o'lchamdagi oq bo'lak bilan oyna ochilishi mumkin.

Bu juda kichik. Qanday qilib chizamiz? Biz massivdan o'tamiz stol- har bir qator (oy) bo'yicha va har bir qator (oy kuni) bo'yicha o'rtasiga. U kerakli joyga va to'rtburchaklar 40 dan 20 ga kerakli rangga bo'yalgan. X pozitsiyasi qanday hisoblanadi? 10 (kirish) + 41 (kenglik + orasidagi bo'shliq) * i (oylarning likvidatori). Y pozitsiyasi? 10 (kirish) + 21 (balandlik + orasidagi bo'shliq) * j (kunlik shifokor). To'g'ri to'sar funksiyani ko'rsatadi to'g'ri (x, y, kenglik, balandlik); -

Rect(10+41*i, 10+21*j, 40, 20);

Dastur:

Void setup() (size(512, 671); //fon o'lchamini o'rnatish(255); //fon rangi - oq String fayli = loadStrings("data/bdates.txt"); //ma'lumotlar faylini o'rnating int jadval = new int;for (int i = 0; i< file.length; i++) { //перебираем все строки файла String date = file[i].split("\\."); //переводим строку в массив, содержащий числа даты if ((int(date) <= 12) && (int(date) >0) && (int(sana)<= 31) && (int(date) >0)) ( //jadval++dagi hamma narsa raqamga asoslangan; //jadval hajmini 1 ga oshirish) ) rang c = rang(54, 99, 142); // Rang (int i = 0; i< table.length; i++) { //пробегаемся по месяцам for (int j = 0; j < table[i].length; j++) { //пробегаемся по дням rect(10+41*i, 10+21*j, 40, 20); //рисуем прямоугольник в нужной позиции } } }

Ushbu kodni ishga tushirishimiz bilan biz maydonni olib tashlaymiz, u ajoyib tarzda aylanali to'rtburchaklar bilan bezatilgan. Rassomlarga buyruq qo'shib, avval konturni tartibga keltiramiz noStroke();. Endi rangimizni o'rnatamiz va to'ldiramiz: to'ldirish (c);

Ajoyib. Endi maydon oq bo'shliqlar bilan chiroyli ko'k plitkalar bilan qoplangan. Endi biz jadval qiymatlarini to'ldirish rangiga kodlashimiz kerak. Qo'shimcha ma'lumot uchun buni qadrlaymiz. Rang yorqinligi 0 dan 255 gacha qiymatlarni oladi. Yozish to'ldirish (c, 10); muzga quyuq mavimsi rang bering va yozib oling to'ldirish (c, 240); Bo'shliqqa ko'k rang bering. Xo'sh, ko'rish diapazoni 0..255. Bizning massivimizdagi qiymatlar diapazoni ancha katta (yoki kichikroq). Keling, massivning maksimal qiymatini bilamiz deb faraz qilaylik. Minimal, shubhasiz, nolga teng bo'ladi. Biz massivdagi qiymatlarni 0,255 oralig'iga kiritishimiz kerak, chunki biz masshtabni o'zgartirdik (katta qildik). Buning uchun asosiy funktsiya xaritasi (qiymatlar, chiqish diapazonining boshlanishi, chiqish diapazonining oxiri, yangi diapazonning boshlanishi, yangi diapazonning oxiri):

Xarita(jadval[i][j], 0, 1000, 0, 255);

Bu erda biz nafaqani yig'dik, shunda massiv uchun maksimal qiymat 1000 ga teng. jadval[i][j] 1000 funktsiyasi 255 ni aylantiradi va agar qiymat 0 bo'lsa, nolga aylanadi.

Global massivning minimal va maksimal qiymatlarini qanday olishimiz mumkin? Bir o'lchovli massiv uchun funktsiyalar bir xil min()і max(). Vikoristovuyemo í̈x. Biz tsiklni "oylar" bo'yicha o'tkazamiz va "oy" terisining minimal va maksimal qiymatlarini (o'rta qism tomonidan bir hil massa sifatida so'riladi) massivdagi minimal yoki maksimal qiymatni saqlaydigan o'zgarishlar bilan tenglashtiramiz. Va yana bir muhim so'zni unutmaylik: ba'zida ma'lumotlar tarmog'ida noto'g'ri sanalar topilgan, shuning uchun. Men odamlarning sanasini ko'rsatmoqchiman 31 barg tushishi yoki 30 shiddatli. Bu haqiqatga e'tibor bermasdan, biz noma'lum sanalarning qiymatlarini nolga o'rnatdik.

Jadval = 0; //30 shafqatsiz jadval = 0; //31 shiddatli jadval = 0; //31 chorak jadvali = 0; //31 karub jadvali = 0; //31 veresnya jadvali = 0; //31 barg tushadi in mi = jadval; //Minimal qiymat int ma = jadval; // uchun maksimal qiymat (int i = 0; i< table.length; i++) { if ((min(table[i]) < mi) && (min(table[i]) >0)) ( //bu qatorning minimal qiymati oqim minimumidan kichik va noldan katta bo'lishidan qat'iy nazar mi = min(jadval[i]); //minimum qiymatini ishlab chiqing ) if (max(jadval[i) ]) > ma) ( //, chunki qatorning maksimal qiymati joriy maksimaldan kattaroqdir ma = max(jadval[i]);//qiymatni maksimal ) ) println(mi + " " + ma) ; // ko'rsatiladigan qiymat

Mening qiymatim 14 va 47 bo'lib chiqdi. Aslida, bu muhim emas, chunki biz o'zgaruvchan qiymatlarni to'g'rilashimiz mumkin. Endi siz stolning o'rtasida teri kasalliklarini davolashingiz kerak, keyin. To'g'ri ichak terisini bo'yashdan oldin plomba qo'ying:

Void setup() (size(512, 671); //fon o'lchamini o'rnatish(255); //fon rangi - oq String fayli = loadStrings("data/bdates.txt"); //ma'lumotlar faylini o'rnating int jadval = new int;for (int i = 0; i< file.length; i++) { //перебираем все строки файла String date = file[i].split("\\."); //переводим строку в массив, содержащий числа даты if ((int(date) <= 12) && (int(date) >0) && (int(sana)<= 31) && (int(date) > < table.length; i++) { if ((min(table[i]) < mi) && (min(table[i]) >0)) ( //bu qatorning minimal qiymati oqim minimumidan kichik va noldan katta bo'lishidan qat'iy nazar mi = min(jadval[i]); //minimum qiymatini ishlab chiqing ) if (max(jadval[i) ]) >< table.length; i++) { //пробегаемся по месяцам for (int j = 0; j < table[i].length; j++) { //пробегаемся по дням fill(c, map(table[i][j], 0, ma, 0, 255)); //считаем заливку rect(10+41*i, 10+21*j, 40, 20); //рисуем прямоугольник в нужной позиции } } }

Dasturni ishga tushirgandan so'ng nima qilishimiz kerak? Xuddi shu kuni tug'ilganlar soni tufayli plitkalar boshqa rangga aylandi. 29-fevralda aniq rang olish mumkinligi ham muhimdir. Shubhasiz, bu kunda tug'ilganlar soni minimaldir va bu biz ko'rsatish uchun mavjud bo'lgan ranglar diapazonining ko'p qismini sarflaganimizni anglatadi (qiymatlar 14 dan boshlanadi va bizning minimalimiz 0 - Bu shuni anglatadiki, biz buni qilamiz. Taxminan 0 dan 85 gacha bir qarashda tushunchaning aniq ma'nosiga ega emas. Buzilish Funktsiyaning minimal qiymatlariga etkazilgan. map() nol emas, balki 12, shuning uchun kafel 29 muz rangli bo'ladi. Bizning minimalimiz endi nolga emas, 12 ga aylanganligi sababli, 0 qiymatiga ega bo'lgan bu plitkalarning ko'rinishi salbiy bo'ladi. Tushunishning salbiy qiymatlari bo'lgan qismlar davriy ravishda paydo bo'ladi (-5 - hammasi bir xil, bu 250!), Yomg'irli kunlar oq emas, balki qorong'i bo'ladi. Sizga qanday "nol" kunlarni hayratda qoldirmaslik kerakligini aytaman:

Void setup() (size(512, 671); //fon o'lchamini o'rnatish(255); //fon rangi - oq String fayli = loadStrings("data/bdates.txt"); //ma'lumotlar faylini o'rnating int jadval = new int;for (int i = 0; i< file.length; i++) { //перебираем все строки файла String date = file[i].split("\\."); //переводим строку в массив, содержащий числа даты if ((int(date) <= 12) && (int(date) >0) && (int(sana)<= 31) && (int(date) >0)) ( //chunki hamma narsa raqamlar jadvali bilan tartibda++; //jadval hajmini 1 ga oshirish) ) jadval = 0; //30 shafqatsiz jadval = 0; //31 shiddatli jadval = 0; //31 chorak jadvali = 0; //31 karub jadvali = 0; //31 veresnya jadvali = 0; //31 barg tushadi in mi = jadval; //Minimal qiymat int ma = jadval; // uchun maksimal qiymat (int i = 0; i< table.length; i++) { if ((min(table[i]) < mi) && (min(table[i]) >0)) ( //bu qatorning minimal qiymati oqim minimumidan kichik va noldan katta bo'lishidan qat'iy nazar mi = min(jadval[i]); //minimum qiymatini ishlab chiqing ) if (max(jadval[i) ]) > ma) ( // chunki qatorning maksimal qiymati joriy maksimaldan katta ma = max(jadval[i]);//maksimalning qiymati ) ) rang c = rang(54, 99, 142) ; noStroke(); uchun (int i = 0; i< table.length; i++) { //пробегаемся по месяцам for (int j = 0; j < table[i].length; j++) { //пробегаемся по дням if (table[i][j] >0) ( toʻldirish(c, map(jadval[i][j], 12, ma, 0, 255)); //toʻldirish muhim rect(10+41*i, 10+21*j, 40, 20) ; //kerakli holatda kichik to'rtburchaklar)))))

Ale scho mi bachimo? Ko'p kunlarning o'rtasida 1-kun ayniqsa ko'rinadi. Aynan shu tendentsiya o'z-o'zini ish bilan band bo'lganlarning ancha ko'p sonida davom etmoqda. Men 300 000 ta akkaunt bo'yicha ma'lumot to'plaganimda, birinchi kunning o'zi ko'k rangda porladi, boshqa ranglar esa oqarib ketdi. Shubhasiz, bu hodisa koristuvachlarning harakatlari bilan bog'liq bo'lib, ular o'zlarining haqiqiy milliy kunini nashr etishdan qo'rqmasdan, ro'yxatdagi birinchi raqamni o'g'irlashadi. Achinarli simulyatorlardan Yangi daryo xalqining haqiqatini o'rgatish mumkin emas. To'plamga mos kelish uchun o'rtaga qo'shilgan ma'lumotlarni tanlash kifoya stol qiymati nolga teng. Rasmni saqlash uchun g'alaba jamoasi saveFrame("frame.jpg"); masalan, dasturlar. Biz dasturdan maxsus faylga ega bo'lamiz.

Men dastur kodini qo'shaman:

Void setup() (size(512, 671); //fon o'lchamini o'rnatish(255); //fon rangi - oq String fayli = loadStrings("data/bdates.txt"); //ma'lumotlar faylini o'rnating int jadval = new int;for (int i = 0; i< file.length; i++) { //перебираем все строки файла String date = file[i].split("\\."); //переводим строку в массив, содержащий числа даты if ((int(date) <= 12) && (int(date) >0) && (int(sana)<= 31) && (int(date) >0)) ( //chunki hamma narsa raqamlar jadvali bilan tartibda++; //jadval hajmini 1 ga oshirish) ) jadval = 0; //1 bugungi jadval = 0; //30 shafqatsiz jadval = 0; //31 shiddatli jadval = 0; //31 chorak jadvali = 0; //31 karub jadvali = 0; //31 veresnya jadvali = 0; //31 barg tushadi in mi = jadval; //Minimal qiymat int ma = jadval; // uchun maksimal qiymat (int i = 0; i< table.length; i++) { if ((min(table[i]) < mi) && (min(table[i]) >0)) ( //bu qatorning minimal qiymati oqim minimumidan kichik va noldan katta bo'lishidan qat'iy nazar mi = min(jadval[i]); //minimum qiymatini ishlab chiqing ) if (max(jadval[i) ]) > ma) ( // chunki qatorning maksimal qiymati joriy maksimaldan katta ma = max(jadval[i]);//maksimalning qiymati ) ) rang c = rang(54, 99, 142) ; noStroke(); uchun (int i = 0; i< table.length; i++) { //пробегаемся по месяцам for (int j = 0; j < table[i].length; j++) { //пробегаемся по дням if (table[i][j] >0) ( toʻldirish(c, map(jadval[i][j], 12, ma, 0, 255)); //toʻldirish muhim rect(10+41*i, 10+21*j, 40, 20) ; //kerakli holatda kichik to'rtburchak)) saveFrame("frame.jpg"); //saqlash)

Tayyor! Chiqarilgan suratlar hali aniq bo'lmadi, chunki tendentsiyalar ko'rinadi, chunki biz juda kam ma'lumot to'pladik. 300 000 ta hisob uchun eksa rasmi (yo'q, men ma'lumotlarni to'plash uchun 100 ta toshni tekshirmadim, lekin serverga asinxron so'rovlarni vikorystvo - ehtimol, men ularni qayta ishlashda amalga oshirish haqida yozaman), bu tendentsiyani aniq ko'rsatadi (hatto men o'tkazmasam ham). 't skrava):

Va olingan vizualizatsiyani tahlil qilish sizning elkangizga tushadi! ;]