国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:8日期:2022-07-25 11:45:13

在繪制正負樣本在各個特征維度上的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 dataWhen 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 npimport matplotlib.pyplot as pltimport matplotlib.mlab as mlabimport matplotlib.ticker as ticker#讀數據r = mlab.csv2rec(’../data/aapl.csv’)r.sort()r = r[-30:] # get the last 30 daysN = len(r)ind = np.arange(N) # the evenly spaced plot indicesdef 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 PDimport numpy as NPimport matplotlib.pyplot as PLTimport matplotlib.ticker as MTKfile = r’vix_series.csv’df = PD.read_csv(file, parse_dates=[0, 2])#用下標代理原始時間戳數據idx_pxy = NP.arange(df.shape[0])#下標-時間轉換funcdef 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, linestyle='-') ax.plot(ax.get_xlim(), [0,0], color='blue', linewidth=0.5, linestyle='--') if x_func: #set數據代理func ax.xaxis.set_major_formatter(MTK.FuncFormatter(x_func)) ax.grid(True) returnfig = 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()

很多時候亂翻google還不如好好通讀官方manual…

以上這篇解決Python Matplotlib繪圖數據點位置錯亂問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产精选莉莉私人影院 | 亚洲国内| 九色国产在线 | 自拍国内| 三级在线国产 | 日本高清va不卡视频在线观看 | 日本成人免费在线视频 | 日韩在线免费视频 | 无码免费一区二区三区免费播放 | 天天鲁天天爱天天鲁天天 | 久久精品午夜视频 | 97国产在线视频公开免费 | 欧美亚洲国产精品久久久久 | 男女午夜爱爱久久无遮挡 | 中文字幕一区二区三区精彩视频 | 正在播放国产一区 | 一级做a爰片久久毛片潮喷 一级做a爰片久久毛片美女 | 三级黄色毛片视频 | 欧美成人视屏 | 白嫩美女一级毛片免费看 | 99爱精品视频 | 日本免费一级 | 欧美亚洲国产精品久久高清 | 成年女人免费看片 | 日本www高清免费视频观看 | 亚洲欧美片| 精品国产一区二区三区久久影院 | 成人欧美在线观看 | 亚洲精品久久一区二区无卡 | 久久久久久综合一区中文字幕 | 欧美人与zoxxxx另类9 | 5x性区m免费毛片视频看看 | 中文字幕亚洲一区二区v@在线 | 欧美一级一一特黄 | 国产呦系列呦 | 91日本在线观看亚洲精品 | 国产日韩在线观看视频 | 男女视频在线免费观看 | 国产成人免费a在线资源 | 26uuu影院亚洲欧美综合 | 美国毛片免费一级 |