ম্যাটপ্লোটিলেবে এক্স অক্ষ স্কেল পরিবর্তন করুন


95

আমি মতলব ব্যবহার করে এই প্লট তৈরি করেছি created

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

ম্যাটপ্লটলিব ব্যবহার করে, এক্স-অ্যাকসিসগুলি 100000, 200000, 300000 এর মতো বিশাল সংখ্যক অঙ্কন করে I আমি 1, 2, 3 এবং 10 ^ 5 এর মতো কিছু দেখতে চাই যা এটি আসলে 100000, 200000, 300000।

ম্যাটপ্লোটিলেব এ জাতীয় স্কেল তৈরি করার কোন সহজ উপায় আছে?

উত্তর:


147

ব্যবহার করার চেষ্টা করুন matplotlib.pyplot.ticklabel_format:

import matplotlib.pyplot as plt
...
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))

এটি a x 10^bআপনার এক্স-অক্ষ টিকমার্কগুলিতে বৈজ্ঞানিক স্বরলিপি প্রয়োগ করে (যেমন )


9
এটি একটি অফসেট যুক্ত করা সম্ভব? (0.0 পরিবর্তে the, 0.5, 1.0, 1.5, ... এবং এক্স 10 ^ খ এটা 0, 5, 10, 15, ... এবং X 10 ^ {B-1} হবে)
— ঈগল

24
ticklabel_formatঅক্ষগুলির অবজেক্টগুলির জন্যও একটি পদ্ধতি, আপনি এর মতো কিছু চেষ্টা করতে পারেনax.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
— কোভিচ

আপনার কীভাবে 2 টি প্লটের সাবপ্লট থাকে তা এই কাজ করতে পারে?
— ফ্যাকফি

4
@ Agগল দুঃখিত, একটি অফসেট যুক্ত করার বিষয়ে আপনার ফলোআপ প্রশ্নটি আমি উল্লেখ করছি। আমার এক্স-অক্ষটি হল [0.1, 0.2, ...]এবং আমি [1, 2, ...]একটি সমন্বিত এক্সপোঞ্জ্যান্টের সাথে পছন্দ করব আপনি কি এর জন্য কোনও সমাধান খুঁজে পেতে পেরেছিলেন?
— ত্রিয়ানত 2

@ Agগল আমি উল্লিখিত প্রশ্নটিতেও আগ্রহী
— বেন উসমান

15

এটি আপনার মূল প্রশ্নের এতটা উত্তর নয় যতটা আপনার প্রশ্নের শরীরে আপনার জিজ্ঞাসার প্রশ্নগুলির মধ্যে একটি।

একটি সামান্য উপস্থাপনা, যাতে আমার নামটি অদ্ভুত বলে মনে হয় না:

import matplotlib
from matplotlib import rc
from matplotlib.figure import Figure
ax = self.figure.add_subplot( 111 )

যেমন উল্লেখ করা হয়েছে আপনি টিক্লেবেল_ ফর্ম্যাটটি ব্যবহার করতে পারেন যে ম্যাটপ্ল্লোলিবকে বড় বা ছোট মানগুলির জন্য বৈজ্ঞানিক স্বরলিপি ব্যবহার করা উচিত:

ax.ticklabel_format(style='sci',scilimits=(-3,4),axis='both')

আরসিপ্যারামে ফ্ল্যাটগুলি ব্যবহার করে (ম্যাটপ্ল্লোলিব আমদানি করা আরসিপ্যারাম থেকে) বা সেগুলি সরাসরি সেট করে আপনি যেভাবে প্রদর্শিত হয় তা আপনি প্রভাবিত করতে পারেন। '1e' এবং 'x10 ^' বৈজ্ঞানিক স্বরলিপিগুলির মধ্যে পরিবর্তনের জন্য আমি এর চেয়ে সুন্দর মার্জিত কোনও উপায় খুঁজে পাই না:

ax.xaxis.major.formatter._useMathText = True

এটি আপনাকে আরও বেশি মাতলাব-এসকে দেবে এবং যুক্তিযুক্তভাবে আরও ভাল চেহারা দেওয়া উচিত। আমি মনে করি নিম্নলিখিতগুলিরও একই করা উচিত:

rc('text', usetex=True)

11

স্কালে ফরম্যাটার সমর্থন বহিঃপ্রকাশ সংগ্রহ করা। দস্তাবেজগুলি নিম্নরূপ:

ক্লাস matplotlib.ticker.ScalarFormatter (useOffset = সত্য, UseMathText = মিথ্যা, useLocale = কিছুই নয়) বেসসমূহ: matplotlib.ticker. Formatter

টিক অবস্থান একটি সাধারণ পুরানো নম্বর। যদি ইউজ অফসেট == সত্য এবং ডেটা রেঞ্জ ডেটা গড়ের তুলনায় অনেক ছোট, তবে একটি অফসেট নির্ধারণ করা হবে যে টিক লেবেলগুলি অর্থবহ। বৈজ্ঞানিক স্বরলিপি ডেটা <10 ^ -n বা ডেটা> = 10 ^ মিটারের জন্য ব্যবহৃত হয়, যেখানে এন এবং এম সেট_পাওয়ারলিমেট ((এন, মি)) ব্যবহার করে নির্ধারিত শক্তি সীমা নির্ধারণ করে। এগুলির জন্য ডিফল্টগুলি axes.formatter.limits আরসি পরামিতি দ্বারা নিয়ন্ত্রিত হয়।

আপনার কৌশলটি হবে:

from matplotlib.ticker import ScalarFormatter
xfmt = ScalarFormatter()
xfmt.set_powerlimits((-3,3))  # Or whatever your limits are . . .
{{ Make your plot }}
gca().xaxis.set_major_formatter(xfmt)

বিন্যাসে x10^5প্রকাশককে প্রদর্শন করতে স্ক্যালারফর্মেটরটি সাথে ইনস্ট্যান্ট করুন useMathText=True।

ইমেজ পরে

আপনি এটি ব্যবহার করতে পারেন:

xfmt.set_useOffset(10000)

এর মতো ফলাফল পেতে:

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


4
useMathText=Trueপেতে স্ক্যালারফর্মেটর ইনস্ট্যান্ট করুন x10^4।
— হফম্যান

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.