2014-10-14 15 views
10

ile adlandırmak:Xticks, önümüzdeki DF sahip dize

A B C 
1 2 'name 1' 
2 3 'name 2' 
3 5 'name 3' 

o sütunu A çizmek ve xticks olarak sütun C kullanılacak doğru emir nedir?

df['A'].plot(xticks = 'C') 
df['A'].plot(xticks = df['C']) 

hem ... Neyse onun çalışmış, örneğin

df['A'].plot(xticks=[1,2,3]) 

Gerçekten diziye dönüştürmek mı çalıştı değildir? Ayrıca, sorunun osme modifikasyonunu da yapıyorum. Bir dizeleri bir sütun var ve benim arsa ile xticks olarak kullanmak isteyen

ValueError: could not convert string to float: name 3 

: Ben önümüzdeki Hata mesajı aldım.

PS

Direkt pandalar arsa fonksiyonu ile gidiş değildir. Sana verilen bağlantı iyi bir kaynaktır, ancak matplotlib.pyplot yapılıyor şeyi gösterir ve eksenler almak için .subplots() kullanan çözümü here

cevap

26

bulundu. Bunu daha önce yapmış olsam da, pili .plot() işlevini mümkün olduğunca kullanabilmenin yollarını aramaya devam ediyorum. Bana göre, kodu basitleştirebilir ve DataFrame iyiliğinden yararlanmayı kolaylaştırır.

Yine de, df.plot() parametrelerinin tamamında kendi başına yapmak kolay olmayan birçok şey var gibi görünüyor. Neyse ki çok daha geniş bir olasılık aralığı açan bir matplotlib.AxesSubplot döndürür.

Bir DataFrame yukarıdaki verileri kopyalanan: sigara masa sakat html çok daha iyi, tabii ki,

A B C 
0 1 2 'name 1' 
1 2 3 'name 2' 
2 3 5 'name 3' 

Ama:

df = pd.read_clipboard(quotechar="'") 

Sanki sıralama-arar. (Belki bir gün bunu düzeltir).

Sonra tüm yapmak zorunda idi:

ax = df.A.plot(xticks=df.index, rot=90) 
ax.set_xticklabels(df.C) 

IPython/Jupyter kullanıyorsanız ve %matplotlib inline sonra olanların her ikisi de aynı hücrede olması gerekir. Bunu ilk başta unutmuştum ve neyin yanlış gittiğini anlamaya çalışmak için biraz zaman harcadım. Ben de belirtildiği gibi, ben df.plot() fonksiyon parametrelerinin içine xticklabels için bir yol, olur bulamadı,

ax = df.A.plot() 
ax.set_xticks(df.index) 
ax.set_xticklabels(df.C, rotation=90) 

ama:

enter image description here

Sen ax değişkenini kullanarak her şeyi yapabilirsiniz Bunu tek bir satırda yapabilmeyi mümkün kılar.

Xtick etiketlerini döndürmek için ek adım bu örnekte fazladan olmayabilir, ancak bu yanıtı ararken üzerinde çalıştığım işe yarar.

Ve tabii ki, birlikte daha kolay hem A ve B sütunları çizebilirsiniz:

ax = df.plot() 
ax.set_xticks(df.index) 
ax.set_xticklabels(df.C, rotation=90) 

enter image description here

+0

o neredeyse aynı soruyu sorduğumda Zaten bu cevap kazanılmış olabilir gibi görünse de [buradan] (http://stackoverflow.com/questions/23472877/plot-with-pandas-xticks?rq=1). – Alnilam

İlgili konular