'লগ' এবং 'সিমলগ' এর মধ্যে পার্থক্য কী?


101

ইন matplotlib , আমি ব্যবহার হয় অক্ষ স্কেলিং সেট করতে পারেন pyplot.xscale()অথবা Axes.set_xscale()। উভয় ফাংশন তিনটি পৃথক স্কেল গ্রহণ করে: 'linear'| 'log'| 'symlog'

মধ্যে পার্থক্য কি 'log'এবং 'symlog'? একটি সাধারণ পরীক্ষায় আমি করেছি, তারা উভয়ই দেখতে একরকম ছিল।

আমি জানি ডকুমেন্টেশন বলে যে তারা বিভিন্ন পরামিতি গ্রহণ করে তবে আমি তাদের মধ্যে পার্থক্যটি এখনও বুঝতে পারি না। কেউ দয়া করে এটি ব্যাখ্যা করতে পারেন? উত্তরটি সেরা হবে যদি এতে কিছু নমুনা কোড এবং গ্রাফিক্স থাকে! (এছাড়াও: 'সিমলগ' নামটি কোথা থেকে এসেছে?)

উত্তর:


188

এর মধ্যে পার্থক্য বোঝার জন্য আমি শেষ পর্যন্ত কিছু পরীক্ষা-নিরীক্ষার জন্য কিছু সময় পেলাম। আমি যা আবিষ্কার করেছি তা এখানে:

  • logকেবলমাত্র ইতিবাচক মানগুলিই মঞ্জুরি দেয় এবং আপনাকে কীভাবে নেতিবাচক মানগুলি ( maskবা clip) পরিচালনা করতে দেয় তা চয়ন করতে দেয় ।
  • symlogঅর্থ প্রতিসম লগ , এবং ধনাত্মক এবং নেতিবাচক মান অনুমতি দেয়।
  • symlog প্লটের মধ্যে শূন্যের কাছাকাছি ব্যাপ্তি সেট করতে দেয় লোগারিথমিকের পরিবর্তে লিনিয়ার হবে।

আমি মনে করি গ্রাফিক্স এবং উদাহরণগুলির সাহায্যে সবকিছু বুঝতে খুব সহজ হবে, সুতরাং আসুন তাদের চেষ্টা করুন:

import numpy
from matplotlib import pyplot

# Enable interactive mode
pyplot.ion()

# Draw the grid lines
pyplot.grid(True)

# Numbers from -50 to 50, with 0.1 as step
xdomain = numpy.arange(-50,50, 0.1)

# Plots a simple linear function 'f(x) = x'
pyplot.plot(xdomain, xdomain)
# Plots 'sin(x)'
pyplot.plot(xdomain, numpy.sin(xdomain))

# 'linear' is the default mode, so this next line is redundant:
pyplot.xscale('linear')

'লিনিয়ার' স্কেলিং ব্যবহার করে একটি গ্রাফ

# How to treat negative values?
# 'mask' will treat negative values as invalid
# 'mask' is the default, so the next two lines are equivalent
pyplot.xscale('log')
pyplot.xscale('log', nonposx='mask')

'লগ' স্কেলিং এবং ননপোসেক্স = 'মাস্ক' ব্যবহার করে একটি গ্রাফ

# 'clip' will map all negative values a very small positive one
pyplot.xscale('log', nonposx='clip')

'লগ' স্কেলিং এবং ননপোসেক্স = 'ক্লিপ' ব্যবহার করে একটি গ্রাফ

# 'symlog' scaling, however, handles negative values nicely
pyplot.xscale('symlog')

'সাইমলগ' স্কেলিং ব্যবহার করে একটি গ্রাফ

# And you can even set a linear range around zero
pyplot.xscale('symlog', linthreshx=20)

'সাইমলগ' স্কেলিং ব্যবহার করে একটি গ্রাফ, তবে এর মধ্যে লিনিয়ার (-20,20)

কেবল সম্পূর্ণতার জন্য, আমি প্রতিটি চিত্র সংরক্ষণ করতে নিম্নলিখিত কোডগুলি ব্যবহার করেছি:

# Default dpi is 80
pyplot.savefig('matplotlib_xscale_linear.png', dpi=50, bbox_inches='tight')

মনে রাখবেন আপনি ব্যবহার করে চিত্রের আকার পরিবর্তন করতে পারেন:

fig = pyplot.gcf()
fig.set_size_inches([4., 3.])
# Default size: [8., 6.]

(আপনি নিশ্চিত না হলে আমার সম্পর্কে আমার নিজের প্রশ্নের উত্তর পড়তে এই )


19

সিমলগ লগের মতো তবে প্লটটি শূন্যের কাছাকাছি অনন্ততায় যেতে এড়াতে আপনাকে শূন্যের কাছাকাছি বিভিন্ন মানের মান নির্ধারণ করতে দেয়।

Http://matplotlib.sourceforge.net/api/axes_api.html#matplotlib.axes.Axes.set_xscale থেকে

লগ গ্রাফটিতে আপনার কখনই শূন্য মান থাকতে পারে না এবং যদি আপনার মান শূন্যের কাছে পৌঁছায় তবে এটি আপনার গ্রাফের নীচে নীচে থেকে নীচে নেমে যাবে (অসীমভাবে নীচের দিকে) কারণ যখন আপনি "লগ (শূন্যের নিকটে)" নেবেন আপনি "নিকটবর্তী নেতিবাচক অনন্ত" পান get

সিমলগ আপনাকে এমন পরিস্থিতিতে সাহায্য করতে পারে যেখানে আপনি লগ গ্রাফ রাখতে চান, তবে যখন মানটি কখনও কখনও নীচে বা শূন্যের দিকে চলে যেতে পারে তবে আপনি এখনও গ্রাফটিকে অর্থবহ উপায়ে প্রদর্শন করতে সক্ষম হতে চান। আপনার যদি সিমলগ দরকার হয় তবে আপনি জানতেন।


ভাল ... আমি এটি পড়েছি, তবে কখনই আমার এক বা অন্য ব্যবহার করা উচিত তা আমি এখনও জানি না। আমি কিছু ধরণের গ্রাফিকাল উদাহরণের প্রত্যাশা করছিলাম যাতে সিমলগ যে সমস্যাটি সমাধান করার চেষ্টা করে তা আসলে আমি দেখতে পেতাম
ডেনিলসন সা মিয়া

4

সিমলগ প্রয়োজনীয় যখন আচরণের একটি উদাহরণ এখানে:

প্রাথমিক প্লট, স্কেল করা হয়নি। X ~ 0 এ কতগুলি বিন্দু ক্লাস্টার লক্ষ্য করুন

    ax = sns.scatterplot(x= 'Score', y ='Total Amount Deposited', data = df, hue = 'Predicted Category')

[ অ স্কেলড '

স্কেল করা প্লট লগ করুন। সবকিছু ভেঙে পড়েছে।

    ax = sns.scatterplot(x= 'Score', y ='Total Amount Deposited', data = df, hue = 'Predicted Category')

    ax.set_xscale('log')
    ax.set_yscale('log')
    ax.set(xlabel='Score, log', ylabel='Total Amount Deposited, log')

লগ স্কেল '

কেন এটি ভেঙে গেল? এক্স-অক্ষের কিছু মান খুব কাছের বা 0 এর সমান হওয়ার কারণে।

সিমলগ স্কেলড প্লট। সবকিছু যেমনটি হওয়া উচিত তেমন।

    ax = sns.scatterplot(x= 'Score', y ='Total Amount Deposited', data = df, hue = 'Predicted Category')

    ax.set_xscale('symlog')
    ax.set_yscale('symlog')
    ax.set(xlabel='Score, symlog', ylabel='Total Amount Deposited, symlog')

সিমলগ স্কেল

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