2017-06-16 44 views
0

我有數據幀中少數列的NaN值。因此,當我嘗試創建多列的線圖時,圖形突然啓動。我如何避免這種情況?通過用零填充數據集中的NaN值?或者還有其他方法嗎?Matplotlib線圖由於數據中的NaN值而開始突然

enter image description here

看紅線!

代碼

import matplotlib.pyplot as plt 
fig = plt.figure(figsize=(70,40)) 
ax = fig.add_subplot(1, 1, 1) 
ax.tick_params(direction='out', length=10, width=3,labelsize=35) 
group_combined.plot(ax=ax,x='Date',y=['column1','collumn2'],linewidth=7.0) 
ax.set_xlabel("date",size=40) 
ax.set_ylabel("Number of orders",size=40) 
ax.set_title("Distribution of orders over the month",size=50) 

在我的數據,有之間沒有NaN的在不在。對於一些專欄,NaN的前幾天可能會出現。一旦價值開始到來,沒有NaN在之間。

Python版本:3.6 Matplotlib版本:2.0.0

+0

你需要澄清你想要的行的行爲。 –

+0

dropna(subset = [col1,col2 ....]) – yukclam9

+0

我剛查過。對我來說,這條線不會在最後一個NaN之後突然開始,而是會出現NaN值出現的'漏洞'。你能否給我們提供一些示例數據,你用來產生情節的代碼,可能還有你的'python'和'matplotlib'版本? –

回答

0

下面是使用numpy刪除NaN的一種方式:

from matplotlib import pyplot as plt 
import numpy as np 

fix,axes = plt.subplots(1,2) 

#setting up a simple function 
x = np.linspace(0,1,100) 
y = np.exp(-x) 

#inserting nan values at random places 
#to get 'measurement data' 
z = np.random.random(100) 
y[z>0.9] = np.nan 

#showing original 
axes[0].plot(x,y) 

#removing nans and replotting: 
x = x[~np.isnan(y)] 
y = y[~np.isnan(y)] 
axes[1].plot(x,y) 

plt.show() 

結果看起來是這樣的: plot with nans and nans removed 左邊的圖顯示數據與NaNs,而在右側他們被刪除。

相關問題