ম্যাথপ্ল্লোলিবের সাথে পাইথনে প্লট করার সময়


164

আমার ফর্ম্যাটে টাইমস্ট্যাম্পগুলির একটি অ্যারে রয়েছে (এইচএইচ: এমএম: এসএস.এমএমএমএমএমএম) এবং ভাসমান পয়েন্ট সংখ্যার আরেকটি অ্যারে, প্রতিটি টাইমস্ট্যাম্প অ্যারেতে একটি মান অনুসারে।

আমি কি ম্যাটপ্ল্লোলিব ব্যবহার করে এক্স অক্ষ এবং y- অক্ষগুলিতে সময় কাটতে পারি?

আমি চেষ্টা করছিলাম তবে কোনওভাবে এটি কেবল ভাসমান অ্যারে গ্রহণ করছিল। আমি কীভাবে সময়টি প্লট করতে পারি? আমাকে কি কোনও উপায়ে ফর্ম্যাটটি পরিবর্তন করতে হবে?

উত্তর:


178

আপনাকে প্রথমে আপনার টাইমস্ট্যাম্পগুলি পাইথন datetimeঅবজেক্টে (ব্যবহার datetime.strptime) রূপান্তর করতে হবে । তারপরে date2numতারিখগুলি ম্যাটপ্ল্লোলিব ফর্ম্যাটে রূপান্তর করতে ব্যবহার করুন ।

ব্যবহার করে তারিখ এবং মান প্লট করুন plot_date:

dates = matplotlib.dates.date2num(list_of_datetimes)
matplotlib.pyplot.plot_date(dates, values)

3
এটি কি তারিখ বা ঠিক সময় পরিকল্পনা করবে? আমি শুধু সময় চান যেহেতু DATETIME রূপান্তর উপর, বছরের সেট 1990 হয়
randomThought

"... ডেটটাইমে রূপান্তর করার জন্য, বছরটি 1990 এ সেট করা হয়েছে": আপনি স্ট্রিং থেকে ডেটটাইমে রূপান্তর করতে যে কোডটি ব্যবহার করেন তা দয়া করে পোস্ট করতে পারেন? রূপান্তরটির সাথে কিছু ভুল হতে পারে। করছেন। চার্ট লেবেলের বিন্যাসকরণ, জে কে সেপ্পেনেন সরবরাহিত তারিখ_দেমো 1 লিঙ্কটি দেখুন। ম্যাটপ্লল্ট লাইব ডকুমেন্টেশন দুর্দান্ত, বিটিডাব্লু। matplotlib.sourceforge.net/index.html
কোডেপ

14
প্লট_ডেটস -> matplotlib.pyplot.plot_date (তারিখ, মান)
পিট

3
বিচ্ছুরিত প্লটের কী হবে? আমি স্ক্যাটার-বুদবুদগুলির আকার নির্ধারণ করতে একটি আকারের অ্যারে সরবরাহ করতে চাই, তবে scatter_date()এই গ্রাফটি পাওয়ার কোনও সমতুল্য এবং সরাসরি / প্রত্যক্ষ উপায় নেই।
ডোয়ান্ডারসন

4
উপরেরটি এক ধরণের ধরণের উপাদান: matplotlib.lines.Line2D অবজেক্টের সাথে একটি তালিকা প্রদান করে। এখন আমি গ্রাফটি দেখানোর জন্য এটি কীভাবে ব্যবহার করব?
অরিন্দম রায়চৌধুরী

87

আপনি টাইমস্ট্যাম্প, পাইপ্লট.প্লট (তাদের স্ট্রিং উপস্থাপনা থেকে তাদের পার্স করার পরে) ব্যবহার করে জোড়গুলি প্লট করতে পারেন । (ম্যাটপ্লোটিলিব সংস্করণসমূহ ১.২.০ এবং ১.৩.১ দিয়ে পরীক্ষা করা হয়েছে)

উদাহরণ:

import datetime
import random
import matplotlib.pyplot as plt

# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]

# plot
plt.plot(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()

plt.show()

ফলাফলের চিত্র:

লাইন প্লট


এখানে একটি বিচ্ছুরিত প্লট হিসাবে একই:

import datetime
import random
import matplotlib.pyplot as plt

# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]

# plot
plt.scatter(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()

plt.show()

এর মতো একটি চিত্র তৈরি করে:

স্ক্যাটার প্লট


4
@andi এটা আমার উদাহরণঃ (পরিবর্তন শুধু কাজ করা উচিত plotজন্য scatter)।
moooeeeep

1
আমি বুঝতে পারছি না যে এই 5 তম প্রশ্নের আমি কেন মুখোমুখি হয়েছি যেখানে কেউ ছড়িয়ে ছিটিয়ে প্লট ব্যবহার করে আসলেই পরীক্ষিত হয়নি - এটি কাজ করে না। Type Error - invalid type promotion
ডোয়ান্ডারসন

1
@ ডোয়ান্ডারসন তারপরে, সম্ভবত আপনি কিছু ভুল করছেন। আমি datetime.datetimeআমার পোস্টে এক্স অক্ষে থাকা বস্তুগুলির সাথে স্ক্যাটার প্লটের জন্য একটি উদাহরণ যুক্ত করেছি ।
moooeeeep

গ্রিড plt.grid(True)
অ্যাডের

1
@ অ্যামফোর্ডের স্পষ্টতা আমার সাথে ২.২.২ নিয়ে কাজ করে matplotlib.__version__। যদিও স্ক্যাটার প্লটটিতে কিছুটা অতিরিক্ত প্রশস্ত এক্স-সীমা রয়েছে ডিফল্ট হিসাবে সেট করা। এই উত্তরটি একটি ওয়ার্কঅ্যারাউন্ড ম্যানুয়ালি সামঞ্জস্য ছাড়া অন্য প্রদান বলে মনে হয় plt.xlim(...): stackoverflow.com/a/46467896/1025391
moooeeeep

23

7 বছর পরে এবং এই কোডটি আমাকে সহায়তা করেছে। তবে আমার সময়গুলি এখনও সঠিকভাবে প্রদর্শিত হচ্ছে না।

এখানে চিত্র বর্ণনা লিখুন

ম্যাটপ্লটলিব ২.০.০ ব্যবহার করে এবং পল এইচ দ্বারা ম্যাটপ্লোটিলেব-এক্স অক্ষের টিক লেবেলের তারিখ বিন্যাস সম্পাদনা থেকে আমাকে নিম্নলিখিত কোডটি যুক্ত করতে হয়েছিল Paul

import matplotlib.dates as mdates
myFmt = mdates.DateFormatter('%d')
ax.xaxis.set_major_formatter(myFmt)

আমি ফর্ম্যাটটি (% এইচ:% এম) এ পরিবর্তন করেছি এবং সময়টি সঠিকভাবে প্রদর্শিত হয়েছে। এখানে চিত্র বর্ণনা লিখুন

সম্প্রদায়কে ধন্যবাদ।


16

এইটি ম্যাটপ্ল্লোলিব সংস্করণ: ২.০.২ ব্যবহার করে আমার সমস্যা হয়েছিল। উপরের উদাহরণটি চালিয়ে আমি বুদবুদগুলির একটি কেন্দ্রিক স্ট্যাকযুক্ত সেট পেয়েছি।

বুদবুদ কেন্দ্রিক স্ট্যাক সহ গ্রাফ

আমি অন্য লাইন যুক্ত করে সমস্যাটি "সংশোধন" করেছি:

plt.plot([],[])

পুরো কোড স্নিপেট হয়ে যায়:

import datetime
import random
import matplotlib.pyplot as plt
import matplotlib.dates as mdates


# make up some data
x = [datetime.datetime.now() + datetime.timedelta(minutes=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]

# plot
plt.plot([],[])
plt.scatter(x,y)

# beautify the x-labels
plt.gcf().autofmt_xdate()
myFmt = mdates.DateFormatter('%H:%M')
plt.gca().xaxis.set_major_formatter(myFmt)

plt.show()
plt.close()

এটি পছন্দসই হিসাবে বিতরণ করা বুদ্বুদগুলি সহ একটি চিত্র তৈরি করে।

বুদবুদ সঙ্গে গ্রাফ সময়ের সাথে বিতরণ


আমার জন্য py2.6 এ কাজ করে না। আমি ValueError পাই: দেখার সীমা ন্যূনতম -0.055000000000000011 1 এর চেয়ে কম এবং এটি একটি অবৈধ ম্যাটপ্ল্লোব তারিখের মান। এই প্রায়ই কিছু ঘটে তাহলে আপনি <1 অক্ষ সঙ্গে চিত্র আকার 432x288> একটি অক্ষ DATETIME ইউনিট আছে করার জন্য একটি অ DATETIME মান পাস
AimForClarity

: অদ্ভুত এক্স-lims থেকে একটি সমাধান তাদের উপর আপনার নিজের সেট করা হয় stackoverflow.com/questions/21423158/...
Qaswed
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.