python matplotlib自定义图例
我正在使用python将一些传感器数据从arduino传输到我的pc。 我希望图表有一个带有一些值的图例(当然,我也会从串行连接流式传输),但在所有示例中,我发现图例左侧有一个很大的空间 我怎样才能删除它?(或者使用其他方法获得相同的输出) 这是我的代码:python matplotlib自定义图例,python,python-3.x,matplotlib,legend,Python,Python 3.x,Matplotlib,Legend,我正在使用python将一些传感器数据从arduino传输到我的pc。 我希望图表有一个带有一些值的图例(当然,我也会从串行连接流式传输),但在所有示例中,我发现图例左侧有一个很大的空间 我怎样才能删除它?(或者使用其他方法获得相同的输出) 这是我的代码: #!/usr/bin/python import matplotlib.pyplot as plt import time import numpy as np from scipy.interpolate import spline im
#!/usr/bin/python
import matplotlib.pyplot as plt
import time
import numpy as np
from scipy.interpolate import spline
import matplotlib.patches as mpatches
# Local variables
x = []
y = []
# Open the data file for reading lines
datafile = open('./plotfiles/forceplot.txt', 'r')
sepfile = datafile.read().split('\n')
datafile.close()
# Create a canvas to place the subgraphs
canvas = plt.figure()
rect = canvas.patch
rect.set_facecolor('white')
# Iterate through the lines and parse them
for datapair in sepfile:
if datapair:
xypair = datapair.split(',')
x.append(int(xypair[0]))
y.append(int(xypair[1]))
x_sm = np.array(x)
y_sm = np.array(y)
x_smooth = np.linspace(x_sm.min(), x_sm.max(), 200)
y_smooth = spline(x, y, x_smooth)
# Define the matrix of 1x1 to place subplots
# Placing the plot1 on 1x1 matrix, at pos 1
sp1 = canvas.add_subplot(1,1,1)
#sp1.plot(x, y, 'red', linewidth=2)
sp1.plot(x_smooth, y_smooth, 'red', linewidth=1)
# Colorcode the tick tabs
sp1.tick_params(axis='x', colors='red')
sp1.tick_params(axis='y', colors='red')
# Colorcode the spine of the graph
sp1.spines['bottom'].set_color('r')
sp1.spines['top'].set_color('r')
sp1.spines['left'].set_color('r')
sp1.spines['right'].set_color('r')
# Put the title and labels
sp1.set_title('matplotlib example 1', color='red')
sp1.set_xlabel('matplot x label', color='red')
sp1.set_ylabel('matplot y label', color='red')
# Show the plot/image
time = 'time: 00:23'
s = 3
sh = "success hits: "+str(s)
legend_dict = { sh: sh, 'total hits' : '5', time : time}
patchList=[]
for key in legend_dict:
data_key = mpatches.Patch(color='None', label=key)
patchList.append(data_key)
plt.legend(handles=patchList)
plt.tight_layout()
plt.grid(alpha=0.8)
plt.savefig("example6.eps")
plt.show()
这是输出:
由于颜色为“无”,因此显示空白。如果使用文本: 文本(x,y,'time:00:23\n成功点击数:3\n总点击数:5',horizontalalignment='center',
verticalalignment='center')@Mr.T好的,但我如何自动缩放文本的坐标?您的x和y将是1和1,正如您希望的那样位于右上角。因此,在阅读我的评论后,您从根本上更改了您的答案,并从链接的答案复制了建议?这不是应该的工作方式。我确实更改了我的答案,因为我没有阅读他的完整代码,但我从未参考过你的链接。我从以前的代码中得到了这些文本。@Srikar T我能为自动缩放做些什么?我的图形具有自动缩放功能,当图形在x轴中增加或图形窗口发生更改时,我的文本将隐藏或使用锚定文本(而不是正常文本)使其接近图形的中间。从mpl_工具包使用锚定文本
txt=AnchoredText(“您的文本”,loc=1),ax.add\u艺术家(txt)