Python 散点图连线,但为什么有底线?
Python Scatter Plot connected with line, but why there is a bottom line?
我正在用散点图连接 1 个图表上的 (x,y) 点列表。它确实将所有这些点连接在一起,但也在底部生成一条线。
这是我的示例代码(我正在使用 iPython):
%matplotlib inline
import numpy as np
import pandas as pd
from scipy import stats, integrate
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(color_codes=True)
mc_time_lst1 = [[0, 8], [1, 12], [2, 18]]
mc_time_lst2 = [[0, 10], [1, 9], [2, 5]]
mc_time_lst3 = [[0, 11], [1, 8], [2, 17]]
plt.plot(mc_time_lst1, 'o-', label='line1')
plt.plot(mc_time_lst2, '-*', label='line2')
plt.plot(mc_time_lst3, '-D', label='line3')
plt.legend();
这是我得到的:
如你所见,我想要的真实3条线下面有一条金线(其实就是3条线)。那么多行的时候,看图例容易混淆。
有什么办法可以消除这个底线吗?或者删除该底线的图例?
您的数据格式有误。绘图函数只需要 y
或 x
和 y
的值。 IE。你会做
plt.plot([0,1,2],[8,12,18])
或者在这种情况下只是
plt.plot([8,12,18])
要绘制问题中的给定数据,您可以按如下方式重新排列它们:
#%matplotlib inline
import numpy as np
import pandas as pd
from scipy import stats, integrate
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(color_codes=True)
mc_time_lst1 = [[0, 8], [1, 12], [2, 18]]
mc_time_lst2 = [[0, 10], [1, 9], [2, 5]]
mc_time_lst3 = [[0, 11], [1, 8], [2, 17]]
x1,y1 = zip(*mc_time_lst1)
x2,y2 = zip(*mc_time_lst2)
x3,y3 = zip(*mc_time_lst3)
plt.plot(x1,y1, 'o-', label='line1')
plt.plot(x2,y2, '-*', label='line2')
plt.plot(x3,y3, '-D', label='line3')
plt.legend()
不需要给出x轴数据,因为它是0,1,2..
等等。
你可以简单的写下面的代码
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
mc_time_lst1 = [ 8, 12, 18]
mc_time_lst2 = [ 10, 9, 5]
mc_time_lst3 = [ 11, 8, 17]
plt.plot(mc_time_lst1, 'o-', label='line1')
plt.plot(mc_time_lst2, '-*', label='line2')
plt.plot(mc_time_lst3, '-D', label='line3')
plt.legend();
我正在用散点图连接 1 个图表上的 (x,y) 点列表。它确实将所有这些点连接在一起,但也在底部生成一条线。
这是我的示例代码(我正在使用 iPython):
%matplotlib inline
import numpy as np
import pandas as pd
from scipy import stats, integrate
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(color_codes=True)
mc_time_lst1 = [[0, 8], [1, 12], [2, 18]]
mc_time_lst2 = [[0, 10], [1, 9], [2, 5]]
mc_time_lst3 = [[0, 11], [1, 8], [2, 17]]
plt.plot(mc_time_lst1, 'o-', label='line1')
plt.plot(mc_time_lst2, '-*', label='line2')
plt.plot(mc_time_lst3, '-D', label='line3')
plt.legend();
这是我得到的:
如你所见,我想要的真实3条线下面有一条金线(其实就是3条线)。那么多行的时候,看图例容易混淆。
有什么办法可以消除这个底线吗?或者删除该底线的图例?
您的数据格式有误。绘图函数只需要 y
或 x
和 y
的值。 IE。你会做
plt.plot([0,1,2],[8,12,18])
或者在这种情况下只是
plt.plot([8,12,18])
要绘制问题中的给定数据,您可以按如下方式重新排列它们:
#%matplotlib inline
import numpy as np
import pandas as pd
from scipy import stats, integrate
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(color_codes=True)
mc_time_lst1 = [[0, 8], [1, 12], [2, 18]]
mc_time_lst2 = [[0, 10], [1, 9], [2, 5]]
mc_time_lst3 = [[0, 11], [1, 8], [2, 17]]
x1,y1 = zip(*mc_time_lst1)
x2,y2 = zip(*mc_time_lst2)
x3,y3 = zip(*mc_time_lst3)
plt.plot(x1,y1, 'o-', label='line1')
plt.plot(x2,y2, '-*', label='line2')
plt.plot(x3,y3, '-D', label='line3')
plt.legend()
不需要给出x轴数据,因为它是0,1,2..
等等。
你可以简单的写下面的代码
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
mc_time_lst1 = [ 8, 12, 18]
mc_time_lst2 = [ 10, 9, 5]
mc_time_lst3 = [ 11, 8, 17]
plt.plot(mc_time_lst1, 'o-', label='line1')
plt.plot(mc_time_lst2, '-*', label='line2')
plt.plot(mc_time_lst3, '-D', label='line3')
plt.legend();