之前学习了一些通用的画图方法和技巧,这次就学一下其它各种不同类型的图。好了先从散点图开始,上代码:
from matplotlib import pyplot as plt
import numpy as np n = 1024 #生成1024个点
x = np.random.normal(0, 1, n) #正态分布x坐标,均值0标准差1
y = np.random.normal(0, 1, n) #正态分布y坐标,均值0标准差1
color = np.arctan2(y, x) #这个用于渲染好看的颜色,自己琢磨意义,哈哈
plt.scatter(x, #x坐标
y, #y坐标
s=50, #点的大小
c=color, #颜色
alpha=0.5, #透明度
cmap='magma' #颜色板,看文档或者源码有很多类型,自己可以试试,如summer、winter、pink
)
plt.show()
散点图还是比较简单,关于一些常用设置,如坐标、图例、文字等可以看我之前的学习文章,还有就是很多参数这些看看api或者源码都能搞懂的。
接下来是简单用一下条形图:
from matplotlib import pyplot as plt
import numpy as np n = 12
x = np.arange(12) #12个条形
y1 = np.random.uniform(1, 10, n) #分布1-10的高度
y2 = -np.random.uniform(1, 10, n) #分布(-1)-(-10)的高度
plt.bar(x, y1)
plt.bar(x, y2) #接下来在条形上下方加上数值
for x0,y0 in zip(x, y1):
plt.text(x0,
y0,
'%.2f' % y0, #保留两位小数
ha='center', #水平对齐方式
va='bottom' #垂直对齐方式
) for x0, y0 in zip(x, y2):
plt.text(x0,
y0,
'%.2f' % y0, # 保留两位小数
ha='center', # 水平对齐方式
va='top' # 垂直对齐方式
)
plt.show()
好了,一个双层的条形图就完成了。其它还有什么饼图、直方图、等高线图等待很多,就不一一写出来了,接下来再弄一弄在一个figure显示多个图吧
其实很简单了,这里要用到subplot(n,m,d)将图分成n行m列,添加地d个格子的图像,接下来偷懒了,就用上面两个例子放一起就好了
from matplotlib import pyplot as plt
import numpy as np plt.figure(num=1, figsize=(12, 6))#设置figure属性,因为要放两张图,这里把宽度弄大点
plt.subplot(1, 2, 1)#1行2列第一个格子ax画图
n = 12
x = np.arange(12) #12个条形
y1 = np.random.uniform(1, 10, n) #分布1-10的高度
y2 = -np.random.uniform(1, 10, n) #分布(-1)-(-10)的高度
plt.bar(x, y1)
plt.bar(x, y2) #接下来在条形上下方加上数值
for x0,y0 in zip(x, y1):
plt.text(x0,
y0,
'%.2f' % y0, #保留两位小数
ha='center', #水平对齐方式
va='bottom' #垂直对齐方式
) for x0, y0 in zip(x, y2):
plt.text(x0,
y0,
'%.2f' % y0, # 保留两位小数
ha='center', # 水平对齐方式
va='top' # 垂直对齐方式
)
#到这里都是第一个ax格子的图像 plt.subplot(1, 2, 2)#开始在的二个ax画图
n = 1024 #生成1024个点
x = np.random.normal(0, 1, n) #正态分布x坐标,在0-1范围
y = np.random.normal(0, 1, n) #正态分布y坐标,在0-1范围
color = np.arctan2(y, x) #这个用于渲染好看的颜色,自己琢磨意义,哈哈
plt.scatter(x, #x坐标
y, #y坐标
s=50, #点的大小
c=color, #颜色
alpha=0.5, #透明度
cmap='magma' #颜色板,看文档或者源码有很多类型,自己可以试试,如summer、winter、pink
)
plt.show()
plt.figure()里面还有很多属性,比如背景颜色板,x和y轴是否共享坐标等等,自己看api和源码吧。哈哈,今天就到这儿。