在 Python 中设置散点图的图例
Setting up the legend for a scatterplot in Python
我已将一些数据从 excel 文件导入到 Python,我想绘制散点图。我遇到的问题是传说。我包含以下代码:
data_2 = xlrd.open_workbook('/Users/.../.../Book1.xlsx')
sheet = data_2.sheet_by_index(0)
sheet.cell_value(0,0)
fig = plt.figure(figsize = (11,8), facecolor='white', edgecolor='black')
plt.xlabel('some x label')
plt.ylabel('some y label')
plt.xticks(np.arange(0.0, 30, 1.0))
plt.yticks(np.arange(-9.50, 1.0, 0.50))
plt.axhline(y=0.0, color='grey', linestyle=':')
plt.margins(0.01)
plt.savefig('plot.png')
for i in range(1, sheet.nrows):
xval = sheet.cell_value(i,0)
for j in range(1, sheet.ncols):
yval = sheet.cell_value(i,j)
plt.scatter(xval,yval, label = 'i = {}'.format(j))
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5)) #the legend will appear on the right of the figure
虽然散点图很好,但图例条目重复了 31 次(31 是数据集中的列数)。我不知道是什么导致了这个问题。我尝试了 plt.legend(..)
行的不同位置,但没有成功。我曾尝试从头开始构建图例,但很难从图中提取点的颜色!如何修改代码以仅在右侧使用 sheet.ncols
- 1(数据集中的第一列是 x 轴值)条目输出图例?
如果有帮助,这是我使用 Excel 绘制数据时得到的图表(但我不想使用 Excel 绘制)
我想让代码重现python中的这样一个情节。注意图例位置在底部,但最好放在图的右边
import xlrd
import numpy as np
from matplotlib import pyplot as plt
data_2 = xlrd.open_workbook(".\Book1.xls")
sheet = data_2.sheet_by_index(0)
sheet.cell_value(0,0)
fig = plt.figure(figsize = (11,8), facecolor="white", edgecolor="black")
plt.xlabel("x")
plt.ylabel("y")
plt.xticks(np.arange(0.0, 30, 1.0))
plt.yticks(np.arange(-9.50, 1.0, 0.50))
plt.axhline(y=0.0, color="grey", linestyle=":")
plt.margins(0.01)
for i in range(1, sheet.nrows):
xval = sheet.cell_value(i, 0)
for j in range(1, sheet.ncols):
yval = sheet.cell_value(i, j)
plt.scatter(xval, yval, label = "i={}".format(j))
plt.legend(loc="center left", bbox_to_anchor=(1, 0.5))
plt.savefig("plot.png")
我不确定你做错了什么,因为我基本上使用了你的代码,只是将 for
循环向上移动所以情节没有出现空,但没有得到你的错误得到了。
数据集很简单:
0, -2, -0.5, 1, 0, -1.5
1, -4, -2, -3, 1, 0.7
2, 1, 0.2, 0.3, 0.88, 1
尝试只标记一行的条目,例如 plt.scatter(xval,yval, label = 'i = {}'.format(j) if i==1 else None)
。无论标签的内容如何,Matplotlib 都会自动为图中每个带标签的对象创建一个图例条目。
我已将一些数据从 excel 文件导入到 Python,我想绘制散点图。我遇到的问题是传说。我包含以下代码:
data_2 = xlrd.open_workbook('/Users/.../.../Book1.xlsx')
sheet = data_2.sheet_by_index(0)
sheet.cell_value(0,0)
fig = plt.figure(figsize = (11,8), facecolor='white', edgecolor='black')
plt.xlabel('some x label')
plt.ylabel('some y label')
plt.xticks(np.arange(0.0, 30, 1.0))
plt.yticks(np.arange(-9.50, 1.0, 0.50))
plt.axhline(y=0.0, color='grey', linestyle=':')
plt.margins(0.01)
plt.savefig('plot.png')
for i in range(1, sheet.nrows):
xval = sheet.cell_value(i,0)
for j in range(1, sheet.ncols):
yval = sheet.cell_value(i,j)
plt.scatter(xval,yval, label = 'i = {}'.format(j))
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5)) #the legend will appear on the right of the figure
虽然散点图很好,但图例条目重复了 31 次(31 是数据集中的列数)。我不知道是什么导致了这个问题。我尝试了 plt.legend(..)
行的不同位置,但没有成功。我曾尝试从头开始构建图例,但很难从图中提取点的颜色!如何修改代码以仅在右侧使用 sheet.ncols
- 1(数据集中的第一列是 x 轴值)条目输出图例?
如果有帮助,这是我使用 Excel 绘制数据时得到的图表(但我不想使用 Excel 绘制)
我想让代码重现python中的这样一个情节。注意图例位置在底部,但最好放在图的右边
import xlrd
import numpy as np
from matplotlib import pyplot as plt
data_2 = xlrd.open_workbook(".\Book1.xls")
sheet = data_2.sheet_by_index(0)
sheet.cell_value(0,0)
fig = plt.figure(figsize = (11,8), facecolor="white", edgecolor="black")
plt.xlabel("x")
plt.ylabel("y")
plt.xticks(np.arange(0.0, 30, 1.0))
plt.yticks(np.arange(-9.50, 1.0, 0.50))
plt.axhline(y=0.0, color="grey", linestyle=":")
plt.margins(0.01)
for i in range(1, sheet.nrows):
xval = sheet.cell_value(i, 0)
for j in range(1, sheet.ncols):
yval = sheet.cell_value(i, j)
plt.scatter(xval, yval, label = "i={}".format(j))
plt.legend(loc="center left", bbox_to_anchor=(1, 0.5))
plt.savefig("plot.png")
我不确定你做错了什么,因为我基本上使用了你的代码,只是将 for
循环向上移动所以情节没有出现空,但没有得到你的错误得到了。
数据集很简单:
0, -2, -0.5, 1, 0, -1.5
1, -4, -2, -3, 1, 0.7
2, 1, 0.2, 0.3, 0.88, 1
尝试只标记一行的条目,例如 plt.scatter(xval,yval, label = 'i = {}'.format(j) if i==1 else None)
。无论标签的内容如何,Matplotlib 都会自动为图中每个带标签的对象创建一个图例条目。