आप पंडों में एक समय श्रृंखला की साजिश पर एक ऊर्ध्वाधर रेखा कैसे बनाते हैं?


81
  • vlinesपंडों श्रृंखला की कथानक में आप एक ऊर्ध्वाधर रेखा ( ) को कैसे बनाते हैं?
  • मैं पंडों का उपयोग रोलिंग साधन, आदि की साजिश के लिए कर रहा हूं, और एक ऊर्ध्वाधर रेखा के साथ महत्वपूर्ण पदों को चिह्नित करना चाहता हूं।
  • क्या इसे vlinesपूरा करने के लिए उपयोग करना संभव है , या कुछ समान है?
  • इस स्थिति में, एक्स अक्ष है datetime।

जवाबों:


110
plt.axvline(x_position)

यह मानक साजिश स्वरूपण विकल्प लेता है ( linestlye, color, ect)

(डॉक्टर)

यदि आपके पास अपनी axesवस्तु का संदर्भ है :

ax.axvline(x, color='k', linestyle='--')

3
हां, आपके पास कुल्हाड़ी वस्तु तक पहुंच है ax = s.plot (), जहां s एक पांडा है। सीरीज़
— joao

42

यदि आपके पास समय-अक्ष है, और आपके पास pd के रूप में आयातित pd है, तो आप उपयोग कर सकते हैं:

ax.axvline(pd.to_datetime('2015-11-01'), color='r', linestyle='--', lw=2)

कई लाइनों के लिए:

xposition = [pd.to_datetime('2010-01-01'), pd.to_datetime('2015-12-31')]
for xc in xposition:
    ax.axvline(x=xc, color='k', linestyle='-')

मेरे पास एक 3-दिन की साजिश है और मैंने जो भी किया था: xposition = [pd.to_datetime('01/04/2016'), pd.to_datetime('02/04/2016'),pd.to_datetime('03/04/2016')]उसके बाद for xc in xposition: ax.axvline(x=xc, color='k', linestyle='-')। और मुझे मिल गया ValueError: ordinal must be >= 1.:। क्या गलत है?
— फाकॉफी

@ फेकॉफी, आपकी तिथियां उत्तर में दिए गए उदाहरण से भिन्न स्वरूप में हैं, हालांकि मैं यह नहीं देख सकता कि इससे क्या फर्क पड़ेगा।
— रूफस वीएस

मैं प्रत्येक दिन के लिए टाइम सीरीज़ के कॉलम प्लॉट पर एक वर्टिकल लाइन प्लॉट करना चाहूंगा, कृपया कोई मदद?
— इकबेल बेनाब

12

DataFrame प्लॉट फ़ंक्शन रिटर्न AxesSubplotऑब्जेक्ट और उस पर, आप जितनी चाहें उतनी पंक्तियाँ जोड़ सकते हैं। नीचे दिए गए कोड नमूने पर एक नज़र डालें:

%matplotlib inline

import pandas as pd
import numpy as np

df = pd.DataFrame(index=pd.date_range("2019-07-01", "2019-07-31"))  # for sample data only
df["y"] = np.logspace(0, 1, num=len(df))  # for sample data only

ax = df.plot()
# you can add here as many lines as you want
ax.axhline(6, color="red", linestyle="--")
ax.axvline("2019-07-24", color="red", linestyle="--")

यहाँ छवि विवरण दर्ज करें


3

matplotlib.pyplot.vlines

  • एक समय श्रृंखला के लिए, अक्ष के लिए दिनांक उचित डेटाइम ऑब्जेक्ट होना चाहिए , न कि स्ट्रिंग्स।
    • pandas.to_datetimeकॉलम को datetimedtype में बदलने के लिए उपयोग करें ।
  • एकल या एकाधिक स्थानों के लिए अनुमति देता है
  • ymin& ymaxको एक विशिष्ट y- मूल्य के रूप में निर्दिष्ट किया जाता है, प्रतिशत के रूप में नहींylim
  • अगर axesकिसी चीज़ के साथ संदर्भित है fig, axes = plt.subplots(), तो बदल plt.xlinesदेंaxes.xlines

plt.plot() और sns.lineplot()

from datetime import datetime
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns  # if using seaborn

plt.style.use('seaborn')  # these plots use this style

# configure synthetic dataframe
df = pd.DataFrame(index=pd.bdate_range(datetime(2020, 6, 8), freq='1d', periods=500).tolist())
df['v'] = np.logspace(0, 1, num=len(df))

# plot
plt.plot('v', data=df, color='magenta')

y_min = df.v.min()
y_max = df.v.max()

plt.vlines(x=['2020-07-14', '2021-07-14'], ymin=y_min, ymax=y_max, colors='purple', ls='--', lw=2, label='vline_multiple')
plt.vlines(x=datetime(2021, 9, 14), ymin=4, ymax=9, colors='green', ls=':', lw=2, label='vline_single')
plt.legend(bbox_to_anchor=(1.04, 0.5), loc="center left")
plt.show()

यहाँ छवि विवरण दर्ज करें

df.plot()

df.plot(color='magenta')

ticks, _ = plt.xticks()
print(f'Date format is pandas api format: {ticks}')

y_min = df.v.min()
y_max = df.v.max()

plt.vlines(x=['2020-07-14', '2021-07-14'], ymin=y_min, ymax=y_max, colors='purple', ls='--', lw=2, label='vline_multiple')
plt.vlines(x='2020-12-25', ymin=y_min, ymax=8, colors='green', ls=':', lw=2, label='vline_single')
plt.legend(bbox_to_anchor=(1.04, 0.5), loc="center left")
plt.show()

यहाँ छवि विवरण दर्ज करें

पैकेज संस्करण

import matplotlib as mpl

print(mpl.__version__)
print(sns.__version__)
print(pd.__version__)

[out]:
3.3.1
0.10.1
1.1.0


आपने सफेद ग्रिड के साथ ग्रे पृष्ठभूमि को कैसे जोड़ा? इसे कोड से बाहर नहीं निकाल सकते
— blkpingu

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.