সামুদ্রিক ফ্যাক্টরপ্লট লেবেল পাঠ ঘোরান


152

আমার একটি সাধারণ ফ্যাক্টরপ্লট রয়েছে

import seaborn as sns
g = sns.factorplot("name", "miss_ratio", "policy", dodge=.2, 
    linestyles=["none", "none", "none", "none"], data=df[df["level"] == 2])

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

সমস্যাটি হ'ল এক্স লেবেলগুলি একসাথে চলে, এগুলি অপঠনযোগ্য করে তোলে। আপনি কীভাবে পাঠ্যটি ঘোরান যাতে লেবেলগুলি পঠনযোগ্য হয়?


29
import matplotlib.pylab as pltplt.xticks(rotation=‌​45)
রাফেলওয়ালে

Dexplot গ্রন্থাগার , লেবেল, Teh চিত্রে আকার নির্ধারণ করে মোড়ানো matplotlib ব্যবহার না করেই সব dpi করার ক্ষমতা আছে।
টেড পেট্রো

উত্তর:


137

আমান সঠিক যে আপনি সাধারণ ম্যাটপ্ল্লোব কমান্ড ব্যবহার করতে পারেন তবে এটি এতে অন্তর্নির্মিত FacetGrid:

import seaborn as sns
planets = sns.load_dataset("planets")
g = sns.factorplot("year", data=planets, aspect=1.5, kind="count", color="b")
g.set_xticklabels(rotation=30)

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

কিছু মন্তব্য রয়েছে এবং এটির "কাজ করে না" দাবি করে অন্য উত্তর রয়েছে তবে যাইহোক, যে কেউ এখানে লিখিতভাবে কোড চালাতে পারে এবং দেখতে পারে যে এটি কাজ করে। অন্য উত্তরটি কী কাজ করছে না তার পুনরুত্পাদনযোগ্য উদাহরণ সরবরাহ করে না, এটি সম্বোধন করা খুব কঠিন, তবে আমার ধারণা হ'ল লোকেরা এই সমাধানটি ফাংশনগুলির আউটপুটে প্রয়োগ করার চেষ্টা করছে যা একটি এরAxes পরিবর্তে কোনও বস্তু ফিরিয়ে দেয় Facet Grid। এগুলি বিভিন্ন জিনিস, এবং Axes.set_xticklabels()পদ্ধতিটির জন্য সত্যই লেবেলের একটি তালিকা প্রয়োজন এবং এটি কেবলমাত্র বিদ্যমান লেবেলের বৈশিষ্ট্যগুলিতে পরিবর্তন করতে পারে না Axes। পাঠটি হ'ল আপনি কী ধরণের জিনিস নিয়ে কাজ করছেন সেদিকে মনোযোগ দেওয়া গুরুত্বপূর্ণ important


আমি একটি ত্রুটি পেয়েছি: সূচিপত্র: অনেক সূচক। আমার কোড! g = sns.factorplot ("মাসের_ তারিখ", "num_proposals", "অ্যাকাউন্ট", বাছাই করা_ডাটা, কল = "অ্যাকাউন্ট", কল_রোপ = 3, শেয়ারেক্স = মিথ্যা); g.set_xticklabels (ঘূর্ণন = 30)
যোশাইরি

10
@ সওপল্ট - এটি আমার জন্য কাজ করেছে, আপনি যেটা নিয়ে এসেছিলেন ঠিক তেমনই তবে g.axes.flatten (): ax.set_xticklabels (ax.get_xticklabels (), আবর্তন = 30)
odedbd

6
ha="right"এক্স-অক্ষ লেবেলগুলিকে তাদের টিক চিহ্নগুলিতে কেন্দ্রীভূত করতে ব্যবহার করুন । অর্থাত্g.set_xticklabels([label1, label2], rotation=30, ha='right')
মানাওয়ালান গাজাপাতি

72
উপরে একটি দম্পতি মন্তব্য অনুরূপ, এই আমাকে একটি ত্রুটি পর্যন্ত আমি পরিবর্তন দিয়েছেন g.set_xticklabels(rotation=30)করতে g.set_xticklabels(g.get_xticklabels(), rotation=30): এই উত্তর ধন্যবাদ stackoverflow.com/a/39689464/1870832
ম্যাক্স পাওয়ার

1
কিছু সিবোর্ন প্লট করার পদ্ধতিগুলি কোনও FacetGridঅবজেক্ট ফিরিয়ে দেয়, আবার কেউ ম্যাটপ্লটলিব Axesঅবজেক্ট দেয়। পূর্বেরদের জন্য, লেবেলগুলি সেট না করা কাজ করবে, পরবর্তীকালের জন্য, এটি হবে না। FacetGridডকুমেন্টেশন: seaborn.pydata.org/api.html দেখে আপনি কোনটি অবজেক্টস তা দেখতে পাচ্ছেন । উদাহরণস্বরূপ, আপনি যদি এটি ব্যবহার করেন g = sns.catplot()তবে কাজ করবে, কিন্তুsns.barplot() এটি করবে করবে না কারণ এটি কোনও Axesবস্তু ফেরায়।
getup8

252

@Mwaskorn দ্বারা উত্তরটি নিয়ে আমার সমস্যা ছিল, যথা

g.set_xticklabels(rotation=30)

ব্যর্থ হয়, কারণ এটিতে লেবেলগুলিরও প্রয়োজন। @ আমানের উত্তরের চেয়ে কিছুটা সহজ হল স্রেফ যোগ করা

plt.xticks(rotation=45)

33
আপনি যেমন লেবেল পেতে পারেন g.set_xticklabels(g.get_xticklabels(), rotation=30)। আপনি যদি আউটপুটটি দমন করতে চান তবে এটি একটি ভেরিয়েবলকে বরাদ্দ করুন।
joelostblom

3
আমি মনে করি এটি সঠিক, যখন plt.xticsআমার জন্য সেটিংস কাজ করেছিল।
muammar

একটি বেহালা প্লট এবং plt.xticks (ঘূর্ণন = এন) এর জন্য উপরের সমস্ত বিকল্প চেষ্টা করে দেখেছি যে আমি কাজ করতে পারলাম কেবল
সেগুলি

29

এটি এখনও একটি ম্যাটপ্ল্লোব অবজেক্ট। এটা চেষ্টা কর:

# <your code here>
locs, labels = plt.xticks()
plt.setp(labels, rotation=45)

8

যদি কেউ বিস্মিত হন যে এটি কীভাবে ক্লাস্টারম্যাপ CorrGrids (প্রদত্ত সামুদ্রিক উদাহরণের অংশ) জন্য:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(context="paper", font="monospace")

# Load the datset of correlations between cortical brain networks
df = sns.load_dataset("brain_networks", header=[0, 1, 2], index_col=0)
corrmat = df.corr()

# Set up the matplotlib figure
f, ax = plt.subplots(figsize=(12, 9))

# Draw the heatmap using seaborn
g=sns.clustermap(corrmat, vmax=.8, square=True)
rotation = 90 
for i, ax in enumerate(g.fig.axes):   ## getting all axes of the fig object
     ax.set_xticklabels(ax.get_xticklabels(), rotation = rotation)


g.fig.show()

6

আপনি plt.setpনিম্নলিখিত হিসাবে ব্যবহার করতে পারেন :

import matplotlib.pyplot as plt
import seaborn as sns

plot=sns.barplot(data=df,  x=" ", y=" ")
plt.setp(plot.get_xticklabels(), rotation=90)

লেবেল 90 ডিগ্রি ঘোরানো।


5

seaborn.heatmapএকটির জন্য , আপনি এগুলি ব্যবহার করে ঘুরতে পারেন ( @ আমানের উত্তরের ভিত্তিতে )

pandas_frame = pd.DataFrame(data, index=names, columns=names)
heatmap = seaborn.heatmap(pandas_frame)
loc, labels = plt.xticks()
heatmap.set_xticklabels(labels, rotation=45)
heatmap.set_yticklabels(labels[::-1], rotation=45) # reversed order for y

1
এটি আমার জন্য কাজ করেছিল, কেবল ঘূর্ণন পরম পেরিয়ে কিছুই করেনি, এই কাজটি করার জন্য আমাকে লেবেলগুলিতেও পাস করতে হয়েছিল
রবীণ বেমসিংহ

0

ফেসট্রিড দ্বারা সমর্থিত কোনও সমুদ্র সৈকত প্লটগুলি (উদাহরণস্বরূপ ক্যাটপ্লট) এর সাথে কাজ করবে না

g.set_xticklabels(rotation=30) 

তবে বারপ্লট, কাউন্টপ্লট ইত্যাদি কাজ করবে কারণ তারা ফেসগ্রিড দ্বারা সমর্থিত নয়। নীচে তাদের জন্য কাজ করবে।

g.set_xticklabels(g.get_xticklabels(), rotation=30)

এছাড়াও, আপনার যদি একে অপরের শীর্ষে 2 টি গ্রাফ ওভারলেড থাকে তবে গ্রাফটিতে সেট_স্টিক্যালাবিল চেষ্টা করুন যা এটি সমর্থন করে।

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