Похоже, вы используете pandas
в качестве "внешнего интерфейса" для matplotlib
.pandas
df.plot.line()
метод выводит все ряды (столбцы) в заданном фрейме данных.
Кроме того, вы передаете множество функций своей функции, но никогда не используете ни один из аргументов.Как ваш код должен знать, какой аргумент использовать для какой причины?Существует множество хороших руководств, показывающих, как определять функции в Python.
Чтобы решить текущую проблему, вы можете попробовать этот код:
def draw_graph(input_file, x_axis, y_axis, label_color, label_name, graph_title):
fig = plt.figure()
ax = input_file.plot.line(x=x_axis, y=y_axis, color=label_color, label=label_name)
plt.title(graph_title)
ax.set_xlabel("Time (seconds)")
ax.set_ylabel(label_name)
plt.ticklabel_format(style="plain", axis="y")
plt.show
Дальнейшие улучшения:
def draw_graph (input_file, x_axis, y_axis, label_color, label_name, graph_title):
ax = input_file.plot.line(x=x_axis, y=y_axis, color=label_color, label=label_name)
plt.title(graph_title)
ax.set_xlabel("Time in seconds")
ax.set_ylabel(label_name)
ax.ticklabel_format(style="plain", axis="y")
Краткое объяснение: Pandas уже создает экземпляр фигуры сам по себе, поэтому нет необходимости создавать второй экземпляр фигуры с fig = plt.figure()
.Но вы также можете создать свою собственную фигуру и передать ее экземпляр пандам:
fig = plt.figure()
ax = fig.gca()
input_file.plot.line(ax=ax, ...)
plt.show
, в зависимости от серверной части и т. Д., Не требуется в большинстве случаев.
Единицыпоказанные на графиках должны быть обозначены без скобок.Лучше всего было бы написать Time курсивом, а единицу - на римском, например, ax.set_xlabel(r'$Time$ $in$ $\mathrm{s}$')
(использование внешнего интерфейса TeX - это самое простое решение, даже если оно выглядит довольно громоздким).
ДажеЛучше объединить это с дробной чертой вместо слова «в», например, так: ax.set_xlabel(r'$\frac{Time}{\mathrm{s}}$')