13

プロットするたびに、X 軸が自動的に並べ替えられます (たとえば、値 3、2、4 を入力すると、X 軸が小さい方から大きい方に自動的に並べ替えられます。

軸が値を入力した順序、つまり3、2、4のままになるようにするにはどうすればよいですか

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

set_autoscalex_on(FALSE) という関数が 1 つ見つかりましたが、それを使用する方法や、それが必要かどうかはわかりません。ありがとう

4

2 に答える 2

5

ダミーの 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)

ここに画像の説明を入力

編集:日付を扱う場合は、実際の日付を軸にプロットしてみませんか?

于 2013-02-08T10:41:23.460 に答える
3

多分あなたは設定したい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()

サンプル

于 2013-02-08T10:41:32.457 に答える