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


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.