91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python Matplotlib繪圖數據點位置錯亂問題解決方法

發布時間:2020-07-23 17:35:29 來源:億速云 閱讀:282 作者:小豬 欄目:開發技術

小編這次要給大家分享的是Python Matplotlib繪圖數據點位置錯亂問題解決方法,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

在繪制正負樣本在各個特征維度上的CDF(累積分布)圖時出現了以下問題:

Python Matplotlib繪圖數據點位置錯亂問題解決方法

問題具體表現為:

1.幾個負樣本的數據點位置倒錯

2.X軸刻度變成了亂七八糟一團鬼東西

最終解決辦法

造成上述情況的原因其實是由于輸入matplotlib.plot()函數的數據x_data和y_data從CSV文件中直接導入后格式為string,因此才會導致所有數據點的x坐標都被直接刻在了x軸上,且由于坐標數據格式錯誤,部分點也就表現為“亂點”。解決辦法就是導入x,y數據后先將其轉化為float型數據,然后輸入plot()函數,問題即解決。

Python Matplotlib繪圖數據點位置錯亂問題解決方法

補充知識:matplotlib如何在繪制時間序列時跳過無數據的區間

其實官方文檔里就提供了方法,這里簡單的翻譯并記錄一下.

11.1.9 Skip dates where there is no data
When plotting time series, e.g., financial time series, one often wants to leave out days on which there is no data, e.g., weekends.
By passing in dates on the x-xaxis, you get large horizontal gaps on periods when there is not data.

The solution is to pass in some proxy x-data, e.g., evenly sampled indices, and then use a custom formatter to format these as dates.
The example below shows how to use an ‘index formatter' to achieve the desired plot:

解決方案是通過傳遞x軸數據的代理,比如下標,

然后通過自定義的'formatter'去取到相對應的時間信息

manual內示例代碼:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import matplotlib.ticker as ticker

#讀數據
r = mlab.csv2rec('../data/aapl.csv')
r.sort()
r = r[-30:] # get the last 30 days
N = len(r)
ind = np.arange(N) # the evenly spaced plot indices
def format_date(x, pos=None):
 #保證下標不越界,很重要,越界會導致最終plot坐標軸label無顯示
 thisind = np.clip(int(x+0.5), 0, N-1)
 return r.date[thisind].strftime('%Y-%m-%d')

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(ind, r.adj_close, 'o-')
ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
fig.autofmt_xdate()
plt.show()

示例:

同樣一段數據上為原始,下為去掉無數據間隔區間

Python Matplotlib繪圖數據點位置錯亂問題解決方法

import pandas as PD
import numpy as NP
import matplotlib.pyplot as PLT
import matplotlib.ticker as MTK

file = r'vix_series.csv'
df = PD.read_csv(file, parse_dates=[0, 2])
#用下標代理原始時間戳數據
idx_pxy = NP.arange(df.shape[0])
#下標-時間轉換func
def x_fmt_func(x, pos=None):
 idx = NP.clip(int(x+0.5), 0, df.shape[0]-1)
 return df['datetime'].iat[idx]
#繪圖流程
def decorateAx(ax, xs, ys, x_func):
 ax.plot(xs, ys, color="green", linewidth=1, line)
 ax.plot(ax.get_xlim(), [0,0], color="blue", 
   linewidth=0.5, line)
 if x_func:
  #set數據代理func
  ax.xaxis.set_major_formatter(MTK.FuncFormatter(x_func))
 ax.grid(True)
 return

fig = PLT.figure()
ax1 = fig.add_subplot(2,1,1)
ax2 = fig.add_subplot(2,1,2)
decorateAx(ax1, df['datetime'], df['vix_all'], None)
decorateAx(ax2, idx_pxy, df['vix_all'], x_fmt_func)
#優化label顯示,非必須
fig.autofmt_xdate()
PLT.show()

看完這篇關于Python Matplotlib繪圖數據點位置錯亂問題解決方法的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

项城市| 灵川县| 铅山县| 永德县| 舟山市| 太和县| 霸州市| 精河县| 车致| 晋宁县| 双流县| 利川市| 乌审旗| 千阳县| 会昌县| 林甸县| 兴仁县| 壶关县| 淅川县| 罗定市| 马公市| 四子王旗| 绥芬河市| 黎平县| 道孚县| 静乐县| 莆田市| 新余市| 建阳市| 侯马市| 鹿泉市| 夏河县| 隆昌县| 武陟县| 镶黄旗| 八宿县| 石渠县| 磐石市| 新龙县| 普陀区| 东源县|