Matplotlib পৃষ্ঠ প্লট


104

আমার কাছে 3 ডি-স্পেসের একটি তালিকা রয়েছে যা 3 ডি স্পেসে পয়েন্টের একটি সেট উপস্থাপন করে। আমি এমন একটি পৃষ্ঠের প্লট করতে চাই যা এই সমস্ত পয়েন্টগুলিকে coversেকে রাখে।

plot_surfaceফাংশন mplot3dপ্যাকেজ হিসাবে আর্গুমেন্ট x, y এবং Z 2d অ্যারে হতে প্রয়োজন। কি plot_surfaceচক্রান্ত পৃষ্ঠ করার অধিকার ফাংশন এবং কীভাবে আমি প্রয়োজনীয় বিন্যাসে আমার ডেটা রুপান্তর করেন?

data = [(x1,y1,z1),(x2,y2,z2),.....,(xn,yn,zn)]


দয়া করে এই সমস্ত সদৃশ পৃষ্ঠকে ট্যাগ করা এবং একে অপরের সাথে সদৃশগুলি বন্ধ করতে শুরু করুন । ন্যাশি ট্যাগ করুন , জালগ্রিড প্রজন্মের জন্য যেগুলির জন্য জাল
স্মি

উত্তর:


120

পৃষ্ঠগুলির জন্য এটি 3-টিপলগুলির তালিকার তুলনায় কিছুটা আলাদা, আপনার 2d অ্যারেতে ডোমেনের জন্য গ্রিডে যেতে হবে।

আপনার সমস্ত কিছু যদি কিছু ফাংশনের পরিবর্তে 3 ডি পয়েন্টের একটি তালিকা থাকে f(x, y) -> zতবে আপনার সমস্যা হবে কারণ 3 ডি পয়েন্ট মেঘকে কোনও পৃষ্ঠে ত্রিভুজ করার একাধিক উপায় রয়েছে।

এখানে একটি মসৃণ পৃষ্ঠ উদাহরণ:

import numpy as np
from mpl_toolkits.mplot3d import Axes3D  
# Axes3D import has side effects, it enables using projection='3d' in add_subplot
import matplotlib.pyplot as plt
import random

def fun(x, y):
    return x**2 + y

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = y = np.arange(-3.0, 3.0, 0.05)
X, Y = np.meshgrid(x, y)
zs = np.array(fun(np.ravel(X), np.ravel(Y)))
Z = zs.reshape(X.shape)

ax.plot_surface(X, Y, Z)

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()

3d


1
হাই, এই জন্য ধন্যবাদ। f(x,y) -> zওপির শুরুতে যেমন তালিকা পদ্ধতির ব্যবহার না করে কোনও ক্রিয়াকলাপ কীভাবে আপনাকে আরও বেশি তথ্য দেয় সে সম্পর্কে কী আপনি দয়া করে বিস্তারিত বলতে পারেন ।
গ্রেগরি কুহান

16
তবে z যখন একটি স্বাধীন ভেরিয়েবল এবং এক্স এবং y এর ফাংশন নয় তখন আপনি কী করবেন?
লাবিবা

4
এই ক্ষেত্রে, সম্ভবত আপনি plot_trisurfপরিবর্তে তাকানো উচিত । তবে আমি যেমনটি উল্লেখ করেছি যে এটি তুচ্ছ নয় কারণ আপনাকে পৃষ্ঠটি ত্রিভুজ করতে হবে এবং একাধিক সমাধান রয়েছে। একটি প্রাথমিক উদাহরণ হিসাবে, (0, 0, 0.2), (0, 1, 0), (1, 1, 0.2), (1, 0, 0) দ্বারা প্রদত্ত 4 টি পয়েন্ট বিবেচনা করুন। উপর থেকে দেখা গেছে, এটি দেখতে কিছুটা স্কোয়ারের মতো দেখায় এতে কিছুটা ভাঁজ হয়। কিন্তু কোন তির্যকটি দিয়ে "ভাঁজ" ঘটে? এটি কি 0.2 এ "উচ্চ" তির্যক বা 0 এ "নিম্ন" তির্যক? উভয়ই বৈধ পৃষ্ঠ! সুতরাং আপনার একটি সুসংজ্ঞাযুক্ত সমাধান দেওয়ার আগে আপনার একটি ত্রিভুজ্যরণ অ্যালগরিদম চয়ন করা উচিত।
wim

কেন এমপিএল_টোকিটস.অ্যাম্প্লট 3 ডি এক্সেস 3 ডি আমদানি করে, তবুও এক্সেস 3 ডি উপরের কোডটিতে কোথাও ব্যবহার হয় না?
絢 瀬 絵 里

5
এই আমদানির পার্শ্ব প্রতিক্রিয়া রয়েছে। Kwarg ব্যবহার projection='3d'কলে fig.add_subplotএই আমদানি ছাড়া অনুপলব্ধ থাকবে।
উইম

33

আপনি কিছু ফাইল এবং প্লট থেকে সরাসরি ডেটা পড়তে পারেন

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
from sys import argv

x,y,z = np.loadtxt('your_file', unpack=True)

fig = plt.figure()
ax = Axes3D(fig)
surf = ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0.1)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.savefig('teste.pdf')
plt.show()

প্রয়োজনে রঙিন ব্যাপ্তি সংজ্ঞায়িত করতে আপনি ভিমন এবং ভিএমএক্স পাস করতে পারেন, যেমন

surf = ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0.1, vmin=0, vmax=2000)

পৃষ্ঠতল

বোনাস বিভাগ

আমি ভাবছিলাম কীভাবে কিছু ইন্টারেক্টিভ প্লট করবেন, এই ক্ষেত্রে কৃত্রিম ডেটা সহ

from __future__ import print_function
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
from IPython.display import Image

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits import mplot3d

def f(x, y):
    return np.sin(np.sqrt(x ** 2 + y ** 2))

def plot(i):

    fig = plt.figure()
    ax = plt.axes(projection='3d')

    theta = 2 * np.pi * np.random.random(1000)
    r = i * np.random.random(1000)
    x = np.ravel(r * np.sin(theta))
    y = np.ravel(r * np.cos(theta))
    z = f(x, y)

    ax.plot_trisurf(x, y, z, cmap='viridis', edgecolor='none')
    fig.tight_layout()

interactive_plot = interactive(plot, i=(2, 10))
interactive_plot

5
কঠোরভাবে বলতে গেলে, পান্ডাস এখানে অপ্রয়োজনীয়।
ডাউনার

এই প্লটটি পুনরুত্পাদন করতে আমার খুব কষ্ট হচ্ছে। এটি অর্জনের জন্য কিছু (ছোট) নমুনার মানগুলি কী হবে?
JRsz

21

আমি ঠিক এই একই সমস্যা জুড়ে এসেছি। আমি সমানভাবে তথ্য 2-D: অ্যারে যে পরিবর্তে 3 1-ডি অ্যারের যে ব্যবধানে আছে matplotlib'র plot_surfaceচায়। আমার ডেটা তাই ঘটেছে pandas.DataFrameএখানে matplotlib.plot_surfaceউদাহরণস্বরূপ 3 1-D অ্যারে প্লট করার পরিবর্তনগুলি।

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np

X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
    linewidth=0, antialiased=False)
ax.set_zlim(-1.01, 1.01)

ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

fig.colorbar(surf, shrink=0.5, aspect=5)
plt.title('Original Code')

এটাই আসল উদাহরণ। এই পরবর্তী বিটটি যুক্ত করা 3 3-ডি অ্যারে থেকে একই প্লট তৈরি করে।

# ~~~~ MODIFICATION TO EXAMPLE BEGINS HERE ~~~~ #
import pandas as pd
from scipy.interpolate import griddata
# create 1D-arrays from the 2D-arrays
x = X.reshape(1600)
y = Y.reshape(1600)
z = Z.reshape(1600)
xyz = {'x': x, 'y': y, 'z': z}

# put the data into a pandas DataFrame (this is what my data looks like)
df = pd.DataFrame(xyz, index=range(len(xyz['x']))) 

# re-create the 2D-arrays
x1 = np.linspace(df['x'].min(), df['x'].max(), len(df['x'].unique()))
y1 = np.linspace(df['y'].min(), df['y'].max(), len(df['y'].unique()))
x2, y2 = np.meshgrid(x1, y1)
z2 = griddata((df['x'], df['y']), df['z'], (x2, y2), method='cubic')

fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(x2, y2, z2, rstride=1, cstride=1, cmap=cm.coolwarm,
    linewidth=0, antialiased=False)
ax.set_zlim(-1.01, 1.01)

ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

fig.colorbar(surf, shrink=0.5, aspect=5)
plt.title('Meshgrid Created from 3 1D Arrays')
# ~~~~ MODIFICATION TO EXAMPLE ENDS HERE ~~~~ #

plt.show()

ফলাফলের পরিসংখ্যানগুলি এখানে:

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


আমি ভাবছিলাম যে পৃষ্ঠের উপরের লাইনগুলি (উপরের চিত্রটি) মুছে ফেলা সম্ভব কিনা, আমি বোঝাতে চাইছি যে ভঙ্গুর উপস্থিতির পরিবর্তে পৃষ্ঠটিকে চকচকে চেহারা দেওয়া সম্ভব? ধন্যবাদ. @ stvn66
বিচ্ছিন্নভাবে

@ ডিফ্র্যাকটডি, একটি ছোট গ্রিড আকার ব্যবহার করার চেষ্টা করুন। আমি প্রায় নিশ্চিত যে কনট্যুরগুলির মধ্যে প্রস্থ নির্ধারণ করে। একটি সূক্ষ্ম গ্রিডের মূল্যায়ন করে, আপনার অবশ্যই "পিক্সেল আকার" হ্রাস করা উচিত এবং রেজোলিউশনটি বাড়ানো উচিত, একটি মসৃণ গ্রেডিয়েন্টের কাছে পৌঁছানো।
স্টিভেন সি হাওয়েল

নির্দিষ্ট বিভাগ অনুসারে উপরের পৃষ্ঠটিকে রঙ করার কোনও উপায় আছে কি? প্রাক্তন জন্য। বিভাগ x, y, z হ'ল ডেটা ফর্ম্যাট এবং আমি নির্দিষ্ট বিভাগ অনুসারে x, y, z এর মধ্য দিয়ে যাওয়া পৃষ্ঠটিকে রঙ করতে চাই।
রুদ্রেশ আজগাঁওকার

@ রুদ্রেশআজগাঁওকার, আপনার তিনটি পৃথক পৃথক প্লট কমান্ড ব্যবহার করতে সক্ষম হওয়া উচিত, আপনার প্রতিটি বিভাগের জন্য একটি করে, তিনটির প্রত্যেকের জন্য যা রঙিন চান তা ব্যবহার করে।
স্টিভেন সি হাওয়েল

আপনি একটি নমুনা কোড প্রদান করতে পারেন দয়া করে? আমি ম্যাটপ্ল্লিটিব এবং পাইথন থেকে বেশ নতুন।
রুদ্রেশ আজগাঁওকার

4

শুধু চিম ইন করার জন্য, ইমানুয়ালের উত্তর ছিল যে আমি (এবং সম্ভবত আরও অনেকে) সন্ধান করছি। 3 টি পৃথক অ্যারেতে আপনার 3 ডি বিক্ষিপ্ত ডেটা থাকলে, পান্ডাস একটি অবিশ্বাস্য সহায়তা এবং অন্যান্য বিকল্পগুলির চেয়ে অনেক ভাল কাজ করে। বিশদভাবে বর্ণনা করার জন্য, ধরুন আপনার x, y, z কিছু স্বেচ্ছাসেবী ভেরিয়েবল। আমার ক্ষেত্রে এগুলি সি, গামা এবং ত্রুটি ছিল কারণ আমি একটি সমর্থন ভেক্টর মেশিন পরীক্ষা করছিলাম। ডেটা প্লট করার জন্য অনেকগুলি সম্ভাব্য পছন্দ রয়েছে:

  • স্ক্যাটার 3 ডি (সিপ্যারামস, গ্যামাস, এভিজি_রফিজার_আরে) - এটি কাজ করে তবে অতিরিক্ত সরল
  • প্লট_ওয়ায়ারফ্রেম (সিপ্যারামস, গ্যামাস, এভিজি_রেফারস_আরে) - এটি কাজ করে তবে আপনার ডেটাটি সুন্দরভাবে বাছাই না করা হলে কুরুচিপূর্ণ দেখাবে, যেমনটি বাস্তব বৈজ্ঞানিক তথ্যের বিশাল অংশগুলির ক্ষেত্রে সম্ভবত
  • ax.plot3D (cParams, gammas, avg_erferences_array) - ওয়্যারফ্রেমের সাথে সমান

ডেটার ওয়্যারফ্রেম প্লট

ডেটার ওয়্যারফ্রেম প্লট

3 ডি ডেটা বিচ্ছুরক

3 ডি ডেটা বিচ্ছুরক

কোডটি এর মতো দেখাচ্ছে:

    fig = plt.figure()
    ax = fig.gca(projection='3d')
    ax.set_xlabel('c parameter')
    ax.set_ylabel('gamma parameter')
    ax.set_zlabel('Error rate')
    #ax.plot_wireframe(cParams, gammas, avg_errors_array)
    #ax.plot3D(cParams, gammas, avg_errors_array)
    #ax.scatter3D(cParams, gammas, avg_errors_array, zdir='z',cmap='viridis')

    df = pd.DataFrame({'x': cParams, 'y': gammas, 'z': avg_errors_array})
    surf = ax.plot_trisurf(df.x, df.y, df.z, cmap=cm.jet, linewidth=0.1)
    fig.colorbar(surf, shrink=0.5, aspect=5)    
    plt.savefig('./plots/avgErrs_vs_C_andgamma_type_%s.png'%(k))
    plt.show()

এখানে চূড়ান্ত ফলাফল:

xyz ডেটার প্লট_ট্রিস্টুরফ


3

সরকারী উদাহরণ পরীক্ষা করুন। এক্স, ওয়াই এবং জেড প্রকৃতপক্ষে 2 ডি অ্যারে, নামপি.মেশগ্রিড () 2 ডি এক্স, ওয়াই জাল 1 ডি x এবং y মানের বাইরে পাওয়ার সহজ উপায়।

http://matplotlib.sourceforge.net/mpl_examples/mplot3d/surface3d_demo.py

আপনার 3-টিউপলগুলি 3 3 ডি অ্যারে রূপান্তর করার অজগর উপায় এখানে।

data = [(1,2,3), (10,20,30), (11, 22, 33), (110, 220, 330)]
X,Y,Z = zip(*data)
In [7]: X
Out[7]: (1, 10, 11, 110)
In [8]: Y
Out[8]: (2, 20, 22, 220)
In [9]: Z
Out[9]: (3, 30, 33, 330)

এখানে এমটাপ্লটলিব ডেলাউন ট্রাইঙ্গুলেশন (ইন্টারপোলেশন), এটি 1 ডি এক্স, ওয়াই, জেডকে কিছু উপযুক্ত (?) রূপান্তর করে:

http://matplotlib.sourceforge.net/api/mlab_api.html#matplotlib.mlab.griddata


না ... এক্সওয়াইজেড সেই উদাহরণে দ্বিমাত্রিক।
উইম

আমি সংশোধন করেছি. লিঙ্কযুক্ত উদাহরণের মতো, যদি আপনার ডেটা অভিন্নভাবে ব্যবধানে থাকে তবে মেশগ্রিড () ব্যবহার করুন। ইন্টারপোলেট যেমন গ্রিডটা () সহ যদি আপনার ডেটা অভিন্নভাবে ব্যবধান না করে থাকে not
দিমা তিসনেক

1

মতলবতে আমি delaunayফাংশনটি ব্যবহার করে অনুরূপ কিছু করেছি x, yশুধুমাত্র কর্ডগুলি (না z), তারপরে উচ্চতা হিসাবে ব্যবহার করে trimeshবা প্লট করা ।trisurfz

SciPy হয়েছে Delaunay বর্গ, যা একই অন্তর্নিহিত QHull গ্রন্থাগার উপর ভিত্তি করে তৈরি যে মতলব এর delaunayফাংশন, তাই আপনি অভিন্ন ফলাফল পেতে হবে।

সেখান থেকে পাইথন-ম্যাটপ্ল্লোলিব উদাহরণে আপনি কী অর্জন করতে চান এই উদাহরণস্বরূপ এই প্লটটিং থ্রিডি বহুভুজকে রূপান্তর করতে কোডের কয়েকটি লাইন হওয়া উচিত , Delaunayযা আপনাকে প্রতিটি ত্রিভুজাকার বহুভুজটির স্পেসিফিকেশন দেয়।


উপর ভিত্তি করে এই উত্তর দেখুন ax.plot_trisurf(..)
এভেজেনি সার্জিভ

1

কেবলমাত্র আরও কিছু চিন্তা যুক্ত করা যা অন্যকে অনিয়মিত ডোমেন প্রকারের সমস্যাগুলিতে সহায়তা করতে পারে। এমন পরিস্থিতিতে যেখানে ব্যবহারকারীর কাছে তিনটি ভেক্টর / তালিকাগুলি রয়েছে, x, y, z রয়েছে এমন একটি 2D সমাধানের প্রতিনিধিত্ব করে যেখানে z একটি আয়তক্ষেত্রাকার গ্রিডে উপরিভাগ হিসাবে প্লট করা উচিত, আর্টিফিক্সআর দ্বারা 'প্লট_ট্রিসুরফ ()' মন্তব্যগুলি প্রযোজ্য। অনুরূপ উদাহরণ কিন্তু অ আয়তক্ষেত্রাকার ডোমেন সহ:

import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D 

# problem parameters
nu = 50; nv = 50
u = np.linspace(0, 2*np.pi, nu,) 
v = np.linspace(0, np.pi, nv,)

xx = np.zeros((nu,nv),dtype='d')
yy = np.zeros((nu,nv),dtype='d')
zz = np.zeros((nu,nv),dtype='d')

# populate x,y,z arrays
for i in range(nu):
  for j in range(nv):
    xx[i,j] = np.sin(v[j])*np.cos(u[i])
    yy[i,j] = np.sin(v[j])*np.sin(u[i])
    zz[i,j] = np.exp(-4*(xx[i,j]**2 + yy[i,j]**2)) # bell curve

# convert arrays to vectors
x = xx.flatten()
y = yy.flatten()
z = zz.flatten()

# Plot solution surface
fig = plt.figure(figsize=(6,6))
ax = Axes3D(fig)
ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0,
                antialiased=False)
ax.set_title(r'trisurf example',fontsize=16, color='k')
ax.view_init(60, 35)
fig.tight_layout()
plt.show()

উপরের কোডটি উত্পাদন করে:

আয়তক্ষেত্রাকার গ্রিড সমস্যার জন্য পৃষ্ঠের প্লট

তবে এটি সমস্ত সমস্যার সমাধান করতে পারে না, বিশেষত যেখানে অনিয়মিত ডোমেইনে সমস্যা সংজ্ঞায়িত করা হয়। এছাড়াও, যেখানে ডোমেনের এক বা একাধিক অবতল অঞ্চল রয়েছে, সেখানে ডেলাউন ট্রায়াঙ্গুলেশনের ফলে ডোমেনের বহিরাগত উত্সাহী ত্রিভুজ তৈরি হতে পারে। এই ধরনের ক্ষেত্রে, সঠিক পৃষ্ঠের উপস্থাপনা অর্জনের জন্য এই দুর্বৃত্ত ত্রিভুজগুলি ত্রিভুজ থেকে সরানো উচিত। এই পরিস্থিতিতে, ব্যবহারকারীর স্পষ্টভাবে ডেলাউন ট্রায়াঙ্গুলেশন গণনা অন্তর্ভুক্ত করতে হবে যাতে এই ত্রিভুজগুলি প্রোগ্রামগতভাবে মুছে ফেলা যায়। এই পরিস্থিতিতে, নিম্নলিখিত কোডটি পূর্বের প্লট কোডটি প্রতিস্থাপন করতে পারে:


import matplotlib.tri as mtri 
import scipy.spatial
# plot final solution
pts = np.vstack([x, y]).T
tess = scipy.spatial.Delaunay(pts) # tessilation

# Create the matplotlib Triangulation object
xx = tess.points[:, 0]
yy = tess.points[:, 1]
tri = tess.vertices # or tess.simplices depending on scipy version

#############################################################
# NOTE: If 2D domain has concave properties one has to
#       remove delaunay triangles that are exterior to the domain.
#       This operation is problem specific!
#       For simple situations create a polygon of the
#       domain from boundary nodes and identify triangles
#       in 'tri' outside the polygon. Then delete them from
#       'tri'.
#       <ADD THE CODE HERE>
#############################################################

triDat = mtri.Triangulation(x=pts[:, 0], y=pts[:, 1], triangles=tri)

# Plot solution surface
fig = plt.figure(figsize=(6,6))
ax = fig.gca(projection='3d')
ax.plot_trisurf(triDat, z, linewidth=0, edgecolor='none',
                antialiased=False, cmap=cm.jet)
ax.set_title(r'trisurf with delaunay triangulation', 
          fontsize=16, color='k')
plt.show()

উদাহরণস্বরূপ প্লটগুলি সমাধান সমাধানের নীচে নীচে দেওয়া হয়েছে 1) মজাদার ত্রিভুজগুলি সহ এবং 2) যেখানে সেগুলি সরানো হয়েছে:

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

ত্রিভুজগুলি সরানো হয়েছে

আমি আশা করি উপরোক্ত সমাধানের ডেটাতে উপস্থাপূর্ণ পরিস্থিতিযুক্ত লোকদের জন্য সহায়ক হতে পারে।


0

আপনার ডেটা ব্যবহার করে সরাসরি 3 ডি পৃষ্ঠ তৈরি করা সম্ভব নয়। আমি আপনাকে পাইক্রিজের মতো কিছু সরঞ্জাম ব্যবহার করে একটি ইন্টারপোলেশন মডেল তৈরি করার পরামর্শ দিচ্ছি । প্রক্রিয়াটি তিনটি পদক্ষেপ অন্তর্ভুক্ত করবে:

  1. ব্যবহার করে একটি ইন্টারপোলেশন মডেলকে প্রশিক্ষণ দিন pykridge
  2. থেকে Xএবং Yব্যবহার করে একটি গ্রিড তৈরি করুনmeshgrid
  3. জন্য ইন্টারপোল্ট মান Z

আপনার গ্রিড এবং সম্পর্কিত Zমান তৈরি করে এখন আপনি এর সাথে প্রস্তুত plot_surface। নোট করুন যে আপনার ডেটার আকারের উপর নির্ভর করে meshgridফাংশনটি কিছু সময়ের জন্য চলতে পারে। কার্যসংক্রান্ত ব্যবহার সমানভাবে ব্যবধানে নমুনা তৈরি করা np.linspaceজন্য Xএবং Yঅক্ষ, তারপর প্রয়োজনীয় অনুমান করা ক্ষেপক প্রয়োগ Zমান। যদি তা হয় তবে আন্তঃবিবাহিত মানগুলি মূল থেকে আলাদা হতে পারে Zকারণ Xএবং Yপরিবর্তিত হয়েছে।

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