我用matlab期间几乎只用到了这两种图:
使用前:
import matplotlib.pyplot as plt
使用:
plt.plot(x, y)
plt.scatter(x, y)
除了带了个前缀,和matlab里绘图也没啥差别。
a=1
b=0
x = torch.linspace(-1, 1, 100)
y = a*x.pow(2)+b+0.1*torch.rand(x.size())
plt.scatter(x, y) # 待拟合数据
plt.plot(x, y)
plt.plot(x, y, "r--o")
“b”:指定绘制的线条颜色为蓝色。
“g”:指定绘制的线条颜色为绿色。
“r”:指定绘制的线条颜色为红色。
“c”:指定绘制的线条颜色为蓝绿色。
“m”:指定绘制的线条颜色为洋红色。
“y”:指定绘制的线条颜色为黄色。
“k”:指定绘制的线条颜色为黑色。
“w”:指定绘制的线条颜色为白色。
o
:指定标记实际点使用的形状为圆形。
*
:指定标记实际点使用“*”符号。
+
:指定标记实际点使用“+”符号。
x
:指定标记实际点使用“x”符号。
-
:指定线条形状为实线。--
:指定线条形状为虚线。-.
:指定线条形状为点实线。:
:指定线条形状为点线。x = torch.randn(30)
y = torch.randn(30)
plt.plot(x, 'r--*')
plt.plot(y, 'b:o') # python默认画在同一张图中
x = torch.randn(30)
y = torch.randn(30)
p1, = plt.plot(x, 'r--*')
p2, = plt.plot(y, 'b:o') # 为了使用图例必须给每个绘图加上名字(matlab里是不是叫句柄?),而且名字后面得加一个英文逗号","
plt.title("test") # 图名
plt.xlabel("x") #
plt.ylabel("y") # x、y轴标签
plt.legend([p1, p2], ["x", "y"]) # 图例
plt.show()
plt.figure() # 先用这个定义一个实例(就像matlab里的figure)
plt.subplot(121) # 第1张子图
p1, = plt.plot(x, 'r--*')
plt.subplot(122) # 第2张子图
p2, = plt.plot(y, 'b:o')
也可以加上分别加上标签等:
plt.figure() # 先用这个定义一个实例(就像matlab里的figure)
plt.subplot(121) # 第1张子图
p1, = plt.plot(x, 'r--*')
plt.title("subplot1")
plt.xlabel("x")
plt.ylabel("y") # 位置放前放后都可以
plt.subplot(122) # 第2张子图
p2, = plt.plot(y, 'b:o')
plt.title("subplot2")
plt.xlabel("x")
plt.ylabel("y") # 位置放前放后都可以
不过好像有点错位~
和线形图有几点区别:
“xxx”
,必须挨个儿指定,具体见下文。plt.scatter(x, y, c='r', marker='o', label="(x,y)")
plt.title("scatter")
plt.xlabel("x")
plt.ylabel("y")
plt.legend(loc=2) # 指定图例的位置
c
——点的颜色marker
——点的形状label
——图例,label这种直接写在绘图语句里面的用法也可以用于plotplt.legend(loc=2)
——设定图例的位置,没有这条语句,scatter里面设定的label不会生效!!
两种绘图指令有相同之处又有不同之处,而且达到同一种效果可能有多种方式。但是这不是我们工作的重点,只要有一种自己惯用的方式,能满足基本需求即可。有特殊需求临时查即可。
plt.hist(x, bins=30, color="g")
bins=30
,指定条纹数,默认是10color
,指定条纹颜色labels = ["Dogs", "Cats", "Birds"]
sizes = [30, 40, 30]
plt.pie(sizes, explode=(0, 0, 0.1), labels=labels, autopct='%1.1f%%', startangle=90)
plt.axis('equal')
说明:
sizes= [15, 50, 35]
的三个数字确定了每部分数据系列在整个圆形中的占比;explode
定义每部分数据系列之间的间隔,如果设置两个0和一个0.1,就能突出第3部分;autopct
是将 sizes中的数据以所定义的浮点精度进行显示;startangle
是绘制第1块饼图时该饼图与X轴正方向的夹角度数,这里设置为90,默认为0;plt.axis('equal')
是必不可少的,用于使X轴和Y轴的刻度保持一致,只有这样,最后得到饼图才是圆形的。