我正在学习如何在工作项目中使用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/