2015-10-06 23 views
5

Tôi nhận được một ValueError: min() arg is an empty sequence khi cố gắng chuyển đổi một cốt truyện khung hình gấu trúc thành âm mưu."min() arg là một chuỗi rỗng" khi cố gắng chuyển đổi âm mưu gấu trúc của tôi thành âm mưu

đây đây là một mẫu của dataframe (với Nans):

ttab.loc[:,:"Irish"]

Group English (British) Americans (White) Canadians Scots Irish 
Year      
1926 1 2 3 4 5 
1946 3 1 2 5 4 
1956 3 1 2 7 5 
1966 2 1 3 9 5 
1977 2 1 3 9 7 
1993 2 NaN NaN 6 1 
2001 4 1 3 NaN 5 
2001* 4 1 3 NaN 5 
2012 4 1 3 NaN 6 

tôi làm một âm mưu khá:

# Time It 
import time 
begin = time.clock() 

# Inline plotting 
%matplotlib inline 

# Import libraries 
import matplotlib 
import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 
import seaborn as sns 
from pandas.tools.plotting import scatter_matrix 

# (*) To communicate with Plotly's server, sign in with credentials file 
import plotly.plotly as py 
# (*) Useful Python/Plotly tools 
import plotly.tools as tls 
# (*) Graph objects to piece together plots 
from plotly.graph_objs import * 

# Read, clean, slice data here... 
# Rename columns, examine, rename groups here... 
# Merge, set index, transpose dataframe here.... 
# Change datatype to float here... 
# Define color palette here... 
# Now Plot... 

# Package all mpl plotting commands inside one function 
def plot_mpl_fig(): 

    # plot parameters 
    figsize = (12,12) 
    axfontsize = 16 
    legfontsize = 14 
    labfontsize = 18 
    yax = (30,0) 
    lw = 2 

    # Interpolate NaNs and plot as dashed lines 
    ax = ttab.loc[:,:'Asian Indians'].interpolate().plot(color=colorlist, ylim=yax, lw=lw, fontsize=axfontsize, \ 
                figsize=figsize, style='--') 

    # Overplot the measured values with solid lines 
    ttab.loc[:,:'Asian Indians'].plot(ax=ax, color=colorlist, ylim=yax, lw=lw, fontsize=axfontsize, figsize=figsize) 

    # Legend handling 
    lines, labels = ax.get_legend_handles_labels() 
    ax.legend(lines[28:], labels[28:], loc='center left', bbox_to_anchor=(-0.3, 0.5), fontsize=legfontsize) 

    # Labeling 
    plt.xlabel('Year',fontsize=labfontsize) 
    plt.ylabel('Rank',fontsize=labfontsize) 

# Plot it! 
plot_mpl_fig() 

# N.B. get matplotlib figure object and assign a variable to it 
mpl_fig1 = plt.figure() 

và sau đó tôi cố gắng để chuyển đổi bằng cách làm theo ví dụ tại: https://plot.ly/python/matplotlib-to-plotly-tutorial/

Quickstart:

>>> import plotly.plotly as py 
>>> import matplotlib.pyplot as plt 
>>> # auto sign-in with credentials or use py.sign_in() 
>>> mpl_fig_obj= plt.figure() 
>>> # ... make a matplotlib figure ... 
>>> py.plot_mpl(mpl_fig1)         # <== ValueError 

Hoặc Hướng dẫn tại Mục 6.1:

# Convert a matplotlib figure object to a Plotly figure object 
help(tls.mpl_to_plotly) 
py_fig1 = tls.mpl_to_plotly(mpl_fig1, verbose=True)   # <== ValueError 
print(py_fig1.to_string()) 
# Plot a matplotlib figure in Plotly 
help(py.iplot_mpl) 
py.iplot_mpl(mpl_fig1, filename='s6_damped_oscillation') # <== ValueError 

Anytime tôi gọi plot_mpl, mpl_to_plotly, hoặc iplot_mpl tôi nhận được ValueError: min() arg is an empty sequence. Tôi nghĩ nó có thể liên quan đến NaN, nhưng tôi không biết cách làm việc đó. Bất kỳ đề xuất?

+0

Bạn có thể đăng dấu vết ngăn xếp đầy đủ không? Cảm ơn. –

+0

Tôi đã gặp vấn đề tương tự, nhưng tôi đã giải quyết một việc như [this] (https://plot.ly/pandas/log-plot/). Nếu bạn cần nhiều tùy chỉnh hơn, bạn có thể đọc [ở đây] (https://plot.ly/python/axes/). – paulochf

Trả lời

0

Dường như mpl_to_plotly yêu cầu sử dụng axes.plot(), không phải là plt.plot(). Mã sau hoạt động trong sổ ghi chép Jupyter.

import plotly.offline as py 
from plotly.offline import init_notebook_mode, iplot 
import plotly.tools as tls 
import matplotlib.pylab as plt 
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas 

init_notebook_mode(connected=True) 
fig = plt.Figure() 
ax = fig.gca() 
x = [-2,0,4,6,7] 
y = [q**2-q+3 for q in x] 
ax.plot(x,y) 
canvas = FigureCanvas(fig) 
plotly_fig = tls.mpl_to_plotly(fig) 
py.iplot(plotly_fig) 
Các vấn đề liên quan