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


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.