برای این کار همانطور که در اظهار نظر قبلی من در بالا ذکر شد ، باید یک سری زمانی از داده ها ایجاد کنید (بلکه فقط دو نکته را همانطور که در مثال خود انجام دادید مشخص می کند). - با این حال من می بینم که این ناخوشایند است ، بنابراین من فکر می کنم شاید فقط برای مورد ساده خطوط روند ، ما می توانیم یک روند Kwarg = را ارائه دهیم که دو تاریخ و دو قیمت را مانند مثال شما می پذیرد. همچنین می تواند لیستی از جفت های تاریخ/قیمت را بپذیرد تا بتواند چندین خط روند را ترسیم کند.
- در حال حاضر این یک اولویت نیست ، زیرا گزینه AddPlot () وجود دارد ، اما اگر می خواهید چنین پیشرفتی را انجام دهید ، من در نظر دارم که بررسی و ادغام کد را بررسی کنم.
همکار Danielgoldfarb در 5 مارس 2020 نظر داد من با بازگشت شکل و محورها آزمایشاتی انجام دادم. این واقعاً کار نکرد تا به من اجازه دهد بعد از تماس با mpf. plot () به طرح اضافه کنم. و به نظر من ، هنگامی که سعی کردم این کار را انجام دهم ، مسائلی که بوجود آمد ، چالش برانگیز تر شد.
هرکسی که می خواهد احساس راحتی کند تا با شکل و محورهای برگشتی آزمایش کند و به من اطلاع دهد که آیا می توانید بدون تغییر اساسی در طراحی MPLFinance ، آن را به کار خود برساند. به خاطر داشته باشید که API قدیمی هنوز در دسترس است و رویکرد API قدیمی این است که کنترل و مسئولیت کامل شکل و محورها را به شما بدهد. بنابراین اگر واقعاً می خواهید به شکل و محورها دسترسی داشته باشید ، می توانید فقط از API قدیمی نیز استفاده کنید ، زیرا اساساً برای آن طراحی شده است.
اکنون ، با توجه به خطوط روند ، همانطور که در یک اظهار نظر در بالا اشاره کردم ، قطعاً احتمالاً آنها را با استفاده از قابلیت های make_addplot () ترسیم می کند. با این حال تماس گیرنده باید داده ها را برای خط روند تولید کند. به نظر من این حداقل به خصوص راحت نیست. بنابراین من قصد دارم این مسئله را به عنوان یک پیشرفت باز کنم تا خطوط روند نقاشی ساده تر شود.
من در حال اجرای این کار به عنوان یک kwarg برای make_addplot هستم ()
- روند =. یک لیست یا لیستی از دو تاریخ یا چهار تاریخ. اگر دو تاریخ ، دو تاریخ خط روند را تعریف می کنند و از نزدیک به نزدیک به دو تاریخ جدا شده می روند. اگر چهار تاریخ ارائه شود ، جفت دوم تاریخ خط روند را تا حدودی فراتر از دو تاریخ که شیب خط روند را تعریف می کند ، گسترش می دهد.
Danielgoldfarb عنوان را تغییر داد و شکل Matplotlib 5 مارس 2020 را تغییر داد Danielgoldfarb ویژگی یا درخواست جدید را اضافه کرد و سؤال حذف شده اطلاعات بیشتر از برچسب های 5 مارس 2020 درخواست می شود
نویسنده Dattran2346 نظر 5 مارس 2020 همانطور که در بالا به آن اشاره کردید ، من در حال حاضر از API قدیمی CandleStick_ohlc استفاده می کنم و کانال را در شیء/محور بازگشت شکل می کشم.
با توجه به API Trend Line New همانطور که شما پیشنهاد کردید ، من فکر می کنم انعطاف پذیرتر است که لیستی از امتیازاتی را که کاربران می خواهند خطوط ترسیم کنند ، و همچنین برای تغییر روند = مطلوب تر باشد. به خطوط =. از آنجا که کاربر ممکن است بخواهد چندین نکته جالب را در نمودار وصل کند ، یعنی make_addplot (lines = [(datea ، pricea) ، (dateb ، priceb) ، (datec ، pricec) ،.]).

به عنوان مثال ، من در حال حاضر می خواهم الگوی دوتایی پایین را روی نمودار ترسیم کنم.
PS: من می خواهم به شما در اجرای این پیشرفت کمک کنم. به من اجازه دهید نظر شما را بدانم
همکار Danielgoldfarb اظهار داشت 5 مارس 2020 • ویرایش شده آیا سعی کرده اید از make_addplot () استفاده کنید زیرا اکنون برای ترسیم این خطوط وجود دارد؟
این به سادگی مستلزم آن است که شما یک لیست (یا یک سری با DateTimeIndex) داشته باشید که به همان طول با DataFrame اصلی باشد. این لیست (یا سری) باید مقادیر موجود در لیست تاریخ شما ، قیمت های قیمت ، هر یک در مکان صحیح خود را در لیست (یا سری) داشته باشد و در تمام نقاط دیگر حاوی NAN باشد.
این مهم است ، زیرا روشی که Matplotlib با نشان دادن روزهای غیر تدارکاتی ، استفاده از طیف وسیعی از عدد صحیح برای محور x (و سپس به سادگی آنها را به عنوان تاریخ قالب بندی می کند) است. این شبیه به candlestick2_ohlc () است. در API جدید می توانید کد را در اینجا مشاهده کنید که تاریخ آن را به XDATES تبدیل می کند که ممکن است تاریخ واقعی باشد یا نباشد.
این واقعیت ، این واقعیت که در داخل محور X ممکن است تاریخ باشد یا ممکن است عدد صحیح باشد ، موضوع شما را که مایل به عبور در یک لیست پراکنده از تاریخ ، قیمت های قیمت هستند ، پیچیده می کند.
ساده ترین کاری که باید انجام دهید (همانطور که در بالا ذکر شد) این است که ابتدا لیست پراکنده تاریخ خود را تبدیل کنید ، قیمت Tuples را به یک سری (با همان طول و همان DateTimeIndex از DataFrame اصلی OHLC) تبدیل کنید. در داخل این سری ، تاریخ های مربوط به تاریخ شما ، قیمت Tuples ارزش (قیمت) از Tuple را دارد و تمام تاریخ های دیگر دارای ارزش NAN هستند.(من فکر می کنم که این کار می کند ؛ اگر نه ما همیشه می توانیم مقادیر را درون یابی کنیم).
اگر می خواستیم یک رویکرد مستقیم تر (شبیه به تماس Line2d () در ارسال اصلی شما) داشته باشیم ، برای انجام این کار باید کد را به mpf. plot () اضافه کنیم. عملکرد mpf. plot () باید مورد خاص خطوط روند را بسیار متفاوت از سایر تنظیمات افزودنی دیگر کنترل کند. این می تواند mpf. plot () را پیچیده تر کند و حفظ آن در طول زمان دشوارتر شود.
بنابراین ، اگر می خواهید فقط یک لیست پراکنده از تاریخ ، قیمت های قیمت را مشخص کنید ، پیشنهاد می کنم تابعی را بنویسیم که چنین لیست پراکنده ای را به یک سری همانطور که در بالا توضیح داده شده است تبدیل می کند. سپس این سؤال به کجا می رسد که آن عملکرد را فراخوانی کنید.
یک امکان این است که قبل از تماس با make_addplot () تماس بگیرید و خروجی را از آن عملکرد به آرگومان داده make_addplot () منتقل کنید. به این ترتیب ، ما نیازی به ایجاد تغییراتی در make_addplot () و نه طرح () نداریم. ما می توانیم این عملکرد را make_trendlines () یا make_lines () بنامیم. چیزی شبیه به این است:
داده ها = mpf. make_lines ([(datea ، pricea) ، (dateb ، priceb) ، (datec ، pricec) ،.]) ap = mpf. make_addplot (data.) mpf. plot (df ، addplot = ap ،.)
احتمال دیگر تماس با عملکرد تبدیل در داخل make_addplot () است. اگر چنین است ، همانطور که در بالا پیشنهاد می کنید ، make_addplot () می تواند یک kwarg به نام خطوط = داشته باشد. من تمایلی به انجام این کار ندارم زیرا به این معنی است که دو راه برای انتقال داده ها به make_addplot () وجود دارد. از طریق متغیر داده یا از طریق متغیر خطوط.
اگر می خواهیم make_addplot () عملکرد تبدیل را به صورت داخلی فراخوانی کنیم ، من لیست تاریخ را می گذارم ، قیمت Tuples را به make_addplot () که داده ها به طور معمول منتقل می شوند ، منتقل می کنم. سپس یا ما یک kwarg sparsedata = true را اضافه می کنیم تا به make_addplot () بگوییم برای تماس با مبدل تماس بگیرید ، یا شاید make_addplot () به خودی خود بفهمد که داده های دریافت شده لیستی از تاریخ ، قیمت های قیمت (و تصمیم به تماس با مبدل است.).
شما چی فکر میکنید؟
از آنجا که من این را می نویسم ، من شروع به دوست داشتن آخرین پیشنهاد بهترین می کنم: make_addplot () می تواند یک لیست پراکنده از تاریخ ، Tuples Price (در همان متغیر داده را که در آن به طور معمول لیست کامل داده ها را می پذیرد) بپذیرد. این وضعیت را تشخیص می دهد و مبدل را برای تبدیل لیست پراکنده به لیست کامل با قیمت ها و مقادیر نان در مکان های صحیح فرا می خواند. سپس داده های تبدیل شده را به دیکت که باز می گردد قرار می دهد.
تصحیح: من تازه فهمیدم که یک چیز در بالا وجود ندارد. تبدیل لیست پراکنده تاریخ ، Tuples Price ، به یک سری با همان شاخص DateTime که DataFrame به شاخص DateTime نیز نیاز دارد یا لیست تاریخ از شاخص DateTime به عنوان ورودی به عملکرد تبدیل. بنابراین ممکن است منطقی باشد که عملکرد تبدیل را از درون mpf. plot () فراخوانی کنیم زیرا این عملکرد در حال حاضر شاخص DateTime را در دسترس دارد. من همچنین با این کد بازی کردم ، و به نظر می رسد که AddPlot مقادیر را به عنوان خطوط ، فقط به عنوان یک طرح پراکندگی ترسیم نمی کند ، مگر اینکه ما مقادیر گمشده را به صورت خطی قرار دهیم (مقادیر بین تاریخ مشخص شده ، قیمت های قیمت).