0

我试图比较Naive 矩阵乘法Strassen 的运行时间。为此,我记录了矩阵不同维度的运行时间。然后我试图将结果绘制在同一张图中进行比较。

但问题是绘图没有显示正确的结果。

  1. 这是数据... 2 3142 3 3531 4 4756 5 5781 6 8107

最左列表示n,维度和最右列表示执行时间。

以上数据是针对Naive 方法的, Strassen的数据也是这种模式。

我将此数据插入到pandas 数据框。绘制数据后,图像如下所示: 在此处输入图像描述

这里蓝色代表Naive,绿色代表Strassen's 这当然不是真的,因为Naive不可能是恒定的。但是我的代码是正确的。所以我决定单独绘制它们,结果如下:

幼稚的 幼稚的

施特拉森 在此处输入图像描述

如您所见,这可能是因为 Y 轴的缩放比例不一样?这是原因吗?

我正在实现的绘图代码是:

fig = plt.figure()

data_naive = pd.read_csv('naive.txt', sep="\t", header=None)
data_naive.columns = ["n", "time"]
plt.plot(data_naive['n'], data_naive['time'], 'g')

data_strassen = pd.read_csv('strassen.txt', sep="\t", header=None)
data_strassen.columns = ["n", "time"]
plt.plot(data_strassen['n'], data_strassen['time'], 'b')

plt.show()

fig.savefig('figure.png')

我试图解决什么问题?

fig = plt.figure()

data_naive = pd.read_csv('naive.txt', sep="\t", header=None)
data_naive.columns = ["n", "time"]

data_strassen = pd.read_csv('strassen.txt', sep="\t", header=None)
data_strassen.columns = ["n", "time"]

ax = data_naive.plot(x='n', y='time', c='blue', figsize=(20,10))
data_strassen.plot(x='n', y='time', c='green', figsize=(20,10), ax=ax)

plt.savefig('comparison.png')
plt.show()

但是没有运气!!!

如何在不改变实际方向的情况下将它们绘制在同一个图中?

4

1 回答 1

-1

IIUC:这是一个使用twinx

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randint(10, 100, (12,2)))
df[1] = np.random.dirichlet(np.ones(12)*1000., size=1)[0]

fig, ax1 = plt.subplots()
ax1.plot(df[0], color='r')
#Plot the secondary axis in the right side
ax2 = ax1.twinx()
ax2.plot(df[1], color='k')
fig.tight_layout()
plt.show()

产生的结果: 在此处输入图像描述

于 2018-11-06T16:24:27.227 回答