2013-02-08 167 views
4

每當我繪製,X軸會自動排序(例如,如果我輸入值3,2,4,它會自動將X軸從小到大排序)如何使matplotlib/pylab中的X軸不自動排序值?

我該怎麼做,所以軸仍然與順序I輸入的值,即3,2,4

import pylab as pl 
    data = genfromtxt('myfile.dat') 
    pl.axis('auto') 
    pl.plot(data[:,1], data[:,0]) 

我發現了一個功能,set_autoscalex_on(FALSE),但我不知道如何使用它,或者它是否是我想要的。 感謝

+0

也就是說軸是什麼...小的值接近原點和大值進一步關閉。問問你自己想要做什麼?也許你想改變x和y = f(x)... – Jan

+0

你爲什麼想這麼做? –

+0

我必須繪製過去30天內的一些數據,並且破壞圖表,我會嘗試在此處添加圖表,以便您可以看到 – Honesta

回答

3

你可以提供一個虛擬的x範圍,然後覆蓋xtick標籤。我同意上述評論它是最好的解決方案,但這很難在沒有任何背景的情況下判斷。

如果你真的想,這可能是一個選項:

fig, ax = plt.subplots(1,2, figsize=(10,4)) 

x = [2,4,3,6,1,7] 
y = [1,2,3,4,5,6] 

ax[0].plot(x, y) 

ax[1].plot(np.arange(len(x)), y) 
ax[1].set_xticklabels(x) 

enter image description here

編輯:如果您使用日期的工作,爲什麼不積軸上的實際日期(也許格式化在當天的日如果你想在軸29 30 1 2等

+0

謝謝,這證明對我有幫助的情況下,我想與一個絕對x軸(房間名稱),但我想要命令它的y值(每個房間的展品)會增加以使其易於在眼睛上。 – Alex

+0

對於其他人的參考,如果你有一個很長的x軸列表並且需要顯示所有元素,請參考http://stackoverflow.com/questions/26131822/how-to-display-all-label-values- in-matlibplo – Kevin

1

也許你要設置的xticks

import pylab as pl 
data = genfromtxt('myfile.dat') 
pl.axis('auto') 
xs = pl.arange(data.shape[0]) 
pl.plot(xs, data[:,0]) 
pl.xticks(xs, data[:,1]) 

工作樣本:

另一種選擇是使用日期時間。如果使用日期,則可以將這些用作plot命令的輸入。

工作樣本:

import random 
import pylab as plt 
import datetime 
from matplotlib.dates import DateFormatter, DayLocator 

fig, ax = plt.subplots(2,1, figsize=(6,8)) 

# Sample 1: use xticks 
days = [29,30,31,1,2,3,4,5] 
values = [random.random() for x in days] 

xs = range(len(days)) 

plt.axes(ax[0]) 
plt.plot(xs, values) 
plt.xticks(xs, days) 

# Sample 2: Work with dates 
date_strings = ["2013-01-30", 
       "2013-01-31", 
       "2013-02-01", 
       "2013-02-02", 
       "2013-02-03"] 

dates = [datetime.datetime.strptime(x, "%Y-%m-%d") for x in date_strings] 
values = [random.random() for x in dates] 

plt.axes(ax[1]) 
plt.plot(dates,values) 
ax[1].xaxis.set_major_formatter(DateFormatter("%b %d")) 
ax[1].xaxis.set_major_locator(DayLocator()) 
plt.show() 

Sample

+0

我會嘗試一下這段代碼,然後回覆你。 (雖然我不明白)謝謝 – Honesta

+0

我很樂意幫助你理解它。 –

+0

非常感謝。有效。儘管現在我在X軸上遇到了一個小問題,但它太擁擠了:)。正如你可以看到http://imgur.com/AD1vbbO如果你有什麼要搜索的建議,比如說函數的名字,那會很感激。 – Honesta