我正在学习如何在工作项目中使用Django框架,该框架将允许用户加载各种格式的文件(目前我仅处理CSV文件),使用Pandas绘制数据图形,并将数据显示回用户通过Django模板。我在iPython中创建图形没有任何问题,但是一直在努力将其添加到HTML Django模板中。

我遵循了matplotlib的以下示例:

# graph input file

from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
from matplotlib.dates import DateFormatter

def graph(request):
    fig = Figure()
    ax = fig.add_subplot(111)
    x = []
    y = []
    now = datetime.datetime.now()
    delta = datetime.timedelta(days=1)
    for i in range(10):
        x.append(now)
        now += delta
        y.append(random.randint(0, 1000))
    ax.plot_date(x, y, '-')
    ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))
    fig.autofmt_xdate()
    canvas = FigureCanvas(fig)
    response = HttpResponse( content_type = 'image/png')
    canvas.print_png(response)
    return response

上面的示例效果很好,我可以在模板中看到它,但这只是带有硬编码值的图形。

我已经尝试使用Pandas,因为它的语法看似过于简单,而我在Django中的尝试如下:
# graph input file

import pandas as pd
from pandas import DataFrame

def graph(request):
    data_df = pd.read_csv("C:/Users/vut46744/Desktop/graphite_project/sampleCSV.csv")
    data_df = pd.DataFrame(dataArray)
    data_df.plot()
    response = HttpResponse( content_type = 'image/png')

    return response

在Django中,调用.plot()可以很好地显示图形,但是会显示HTML模板的空白页。我也尝试使用Numpy的genfromtxt()loadtxt(),但无济于事。另外,我的Google搜索也没有取得成果。

任何帮助或建议都会很棒。如果您知道 Pandas 可以提供更好的替代方法,那么我愿意尝试其他选择。

最佳答案

还没有尝试过,但是我会像这样攻击它:

def graph(request):
    fig = Figure()
    ax = fig.add_subplot(111)
    data_df = pd.read_csv("C:/Users/vut46744/Desktop/graphite_project/sampleCSV.csv")
    data_df = pd.DataFrame(data_df)
    data_df.plot(ax=ax)
    canvas = FigureCanvas(fig)
    response = HttpResponse(content_type='image/png')
    canvas.print_png(response)
    return response

关于python - 从CSV文件创建图形并使用Django和Pandas Python库渲染到浏览器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27390566/

10-12 14:28
查看更多