在散点图图例中添加标签

时间:2019-09-27 21:43:14

标签: python matplotlib

我正试图在我的物理实验室报告的散点图中添加图例标签。它似乎只显示第一个单词(在本例中为“ Actual”),而没有其他显示。该图还将保存并清空文件。

import matplotlib.pyplot as plt
import numpy as np

IndexofR=[1.33, 1.443, 1.34] #Actual, Pfund's Method, Snell's Law
Colors = ['red', 'blue', 'green']
Labels = ['Actual','Pfund\'s Method', 'Snell\'s Law']

plt.scatter(IndexofR, np.zeros_like(IndexofR), c = ['red', 'blue', 'green'], vmin=-2)

plt.yticks([])
plt.xlabel('Index of Refraction')
plt.legend(Labels, loc=1)
plt.title('Actual and Calculated Indexes of Refraction in Tap Water')
plt.show()
plt.savefig('LineGraphLab2.pdf')

我还想使整个图更短(对于少量数据来说这是很高的)。

3 个答案:

答案 0 :(得分:1)

尝试做这样的事情:

import matplotlib.pyplot as plt
import numpy as np

IndexofR=[1.33, 1.443, 1.34] #Actual, Pfund's Method, Snell's Law
Colors = ['red', 'blue', 'green']
Labels = ['Actual','Pfund\'s Method', 'Snell\'s Law']

for i, c, l in zip(IndexofR, Colors, Labels):
    plt.scatter(i, np.zeros_like(i), c=c, vmin=-2, label=l)

plt.yticks([])
plt.xlabel('Index of Refraction')
plt.legend(loc=1)
plt.title('Actual and Calculated Indexes of Refraction in Tap Water')
plt.show()
plt.savefig('LineGraphLab2.pdf')

答案 1 :(得分:0)

是的,因为您输入的是列表而不是字符串,所以仅使用列表中的第一项,在这种情况下为“实际”。您想要的短语是

实际Pfund的斯涅尔定律

以下可能有效,

Labels = 'Actual' + 'Pfund\'s Method' + 'Snell\'s Law'

我不确定Perl正则表达式转义。 matplotlib是否使用乳胶(?),如果可以使用

 Labels = 'Actual' + 'Pfund\textquotesingle s Method' + 'Snell\textquotesingle s Law'

Linux引号的转义是如果课程'“'”'还是跳过撇号?

问题的另一部分是定义子图大小,即Viz。

fig = plt.figure(figsize=(10,10), dpi=200)
axes = fig.add_subplot(1.5,1,1)
Etc...

在数字前进行小调,直到获得所需的图

答案 2 :(得分:0)

我的知识无法更改图像大小。

enter image description here

import matplotlib.pyplot as plt
import numpy as np

IndexofR = [1.33, 1.443, 1.34]  # Actual, Pfund's Method, Snell's Law
Colors = ['red', 'blue', 'green']
Labels = ['Actual', 'Pfund\'s Method', 'Snell\'s Law']

plt.scatter(IndexofR, np.zeros_like(IndexofR), c=['red', 'blue', 'green'], vmin=-2)

plt.yticks([])
plt.xlabel('Index of Refraction')

# plt.scatter(x_array, y_array, label="label_name")
for n in range(len(Labels)):
    plt.scatter(IndexofR[n], 0, label=Labels[n])

plt.legend(Labels, loc=len(Labels))
plt.title('Actual and Calculated Indexes of Refraction in Tap Water')
plt.show()
plt.savefig('LineGraphLab2.pdf')