2017-09-19 166 views
-1

我正在解析日誌文件並創建一個繪圖。僅顯示x軸圖的首個和最後一個刻度標籤

我不需要X軸上的所有標籤。我想只顯示第一個,最後一個或其中的幾個,特定的步驟讓我們說每100.

我該如何做到這一點?我只能顯示第一張或最後一張,但不能同時顯示。

我的代碼:

import numpy as np 
import pylab as pl 
import matplotlib.pyplot as plt 

with open('file.log') as f: 
    lines = f.readlines() 
    x = [int(line.split(',')[0]) for line in lines] 
    my_xticks = [line.split(',')[1] for line in lines] 
    y = [int(line.split(',')[2]) for line in lines] 
    z = [int(line.split(',')[3]) for line in lines] 

plt.xticks(x, my_xticks[0], visible=True, rotation="horizontal") 
plt.xticks(x, my_xticks[-1], visible=True, rotation="horizontal") 

plt.plot (x,z) 
plt.plot (x,z) 
plt.plot(x, y) 


plt.show() 

謝謝!

+0

'plt.xticks([x.min(),x.max()])'做你想要的嗎? – Jarad

+0

它給了我一個錯誤'AttributeError:'列表'對象沒有屬性'min'' – tyon

回答

0

使用x-ticks,您可以提供一個列表。所以,你可以這樣做:

plt.xticks([my_xticks[0], my_xticks[-1]], visible=True, rotation="horizontal") 

順便說一句,你可以得到原蜱使用:

my_xticks = ax.get_xticks() 

其中ax你對你Axes實例。你甚至可以提供自己的值:

plt.xticks(
      [my_xticks[0], my_xticks[-1]], 
      ['{:.2}'.format(my_xticks[0]), '{:.2}'.format(my_xticks[-1])] 
      visible=True, rotation="horizontal") 

等,你可以看到這很容易可以推廣...

只要記住,刻度標記是指在特定Axes圖內。所以理想情況下你應該這樣做:

`ax.set_xticks(..)` 
+0

我的xticks實際上是字符串,他們看起來:9/5/2017 8:47:15 AM 所以,如果我試着'lt .txt([my_xticks [0],my_xticks [-1]],visible = True,rotation =「horizo​​ntal」)'我得到錯誤'self._points [:, 0] =間隔 ValueError: ():9/5/2017 8:47:15 AM' – tyon