python进阶-matplotlib基本操作
matplotlib基本操作
1.导入
import matplotlib.pyplot as plt
2.绘图
如果想把两张图画在一张图里,第一个show()就不要写,写最后一个就行
# 绘图
x = np.linspace(0,10,200) #0到10,等步长生成200个数,数字越多,曲线越圆滑
y = np.sin(x)
plt.plot(x,y)
plt.show() #要显示绘制出的图 必须要这样调用才可以!
plt.plot(x,np.cos(x))
plt.show()
2.1虚线样式
lt.plot(x,y,'--')
plt.show()
如果想把图片保存到电脑上
fig = plt.figure()
plt.plot(x,y,'--')
fig.savefig(r"C:\Users\liujie\Desktop\1.png")
此时电脑桌面上已经保存了
2.2点状样式
x = np.linspace(0,10,20)
plt.plot(x, np.sin(x),'o')
plt.show()
2.3color控制颜色
x = np.linspace(0,10,20)
plt.plot(x, np.sin(x),'o',color='black')
plt.show()
颜色、线型这些参数看这里:https://www.cnblogs.com/webary/p/5813855.html
颜色(color 简写为 c):
蓝色: ‘b’ (blue)
绿色: ‘g’ (green)
红色: ‘r’ (red)
蓝绿色(墨绿色): ‘c’ (cyan)
红紫色(洋红): ‘m’ (magenta)
黄色: ‘y’ (yellow)
黑色: ‘k’ (black)
白色: ‘w’ (white)线型(linestyle 简写为 ls):
实线: ‘-’
虚线: ‘–’
虚点线: ‘-.’
点线: ‘:’
点: ‘.’
点型(标记marker):
像素: ‘,’
圆形: ‘o’
上三角: ‘^’
下三角: ‘v’
左三角: ‘<’
右三角: ‘>’
方形: ‘s’
加号: ‘+’
叉形: ‘x’
棱形: ‘D’
细棱形: ‘d’
三脚架朝下: ‘1’(像’丫’)
三脚架朝上: ‘2’
三脚架朝左: ‘3’
三脚架朝右: ‘4’
六角形: ‘h’
旋转六角形: ‘H’
五角形: ‘p’
垂直线: ‘|’
水平线: ‘_’
2.4 加label
plt.plot(x, y,color='black',label='sin(x)') #label字符串参数务必加上u'字符串'声明为unicode编码,否则图例将会添加失败。
2.5 legend控制Label显示效果,loc控制label位置
loc=1表示放右上角,也可以替换成“upper right”。默认为0是左下角。
plt.legend(loc=1) #让图例生效,这里记得要放show()前面!
plot函数可控制的参数很多
plt.plot(x, np.cos(x),'-p',color='red',label='cos(x)',markersize=10,linewidth=4,markeredgecolor='gray',markeredgewidth=1) #-表示实线,p表示五边形,markersize五边形的大小,linewidth线条的粗细
2.6限制坐标轴的范围
相当于把某一块截出来了
plt.xlim(-5, 5) # 限定横轴的范围
plt.ylim(-5, 5) # 限定纵轴的范围
2.7散点图
scatter函数
plt.scatter(x,y,s=100,c='gray')
画个好看的散点图
x = np.random.randn(100)
y = np.random.randn(100)
colors = np.random.rand(100)
sizes = 1000 * np.random.rand(100) #点的大小
plt.scatter(x,y,c=colors,s=sizes,alpha=0.4)
plt.colorbar() #右边的图例
plt.show()
设置主题样式,还有其他的参数可以去网上搜一下,这里是经典样式
plt.style.use('classic')
看下效果
灰色的样式
plt.style.use('seaborn-whitegrid')
2.8 pandas本身自带绘图
2.8.1 线性图
# pandas本身自带绘图
df = pd.DataFrame(np.random.rand(100,4),columns=['A','B','C','D'])
# print(df) #生成了100*4的随机数
df.plot()
plt.show()
只画A
df.A.plot() #只画一个对象也是可以的
plt.show()
2.8.2 柱状图
df = pd.DataFrame(np.random.randint(10,50,(3,4)),columns=['A','B','C','D'],index =['one','two','three']) #生成了一个3行4列的10-50之间的随机数
# print(df)
df.plot.bar()
plt.show()
只画A的话:
df.A.plot.bar()
plt.show()
画成堆积形状的话:
df.plot(kind = 'bar',stacked = True)
plt.show()
2.8.3 直方图
df = pd.DataFrame(np.random.rand(100,4),columns=['A','B','C','D'])
df.hist()
plt.show()
只绘制A列,格子取消,设置图片大小
df = pd.DataFrame(np.random.rand(100,4),columns=['A','B','C','D'])
df.hist(column='A',grid= False, figsize=(5,4))
plt.show()
2.8.4 密度图
df = pd.DataFrame(np.random.rand(100,4),columns=['A','B','C','D'])
df.plot.kde() #等价df.plot(kind='kde')
plt.show()
这里如果没有安装spicy这个包的话会报错,只要安装一下就好了。安装方法与之前的numpy那篇博客相同。
然后看一下绘制效果:
3. 3D图
# 画个3D的
from matplotlib.ticker import LinearLocator,FormatStrFormatter
fig = plt.figure()
ax = fig.gca(projection = '3d')
# Make data
X = np.arange(-5,5,0.25)
Y = np.arange(-5,5,0.25)
X,Y = np.meshgrid(X,Y)
R = np.sqrt(X**2,Y**2)
Z = np.sin(R)
# Plot in surface
surf = ax.plot_surface(X,Y,Z, cmap=cm.coolwarm, linewidth=0, antialiased=False)
# Customize the z axis
ax.set_zlim(-1.01,1.01)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formattar(FormatStrFormatter('%.02f'))
# Add a color bar which maps values to colors.
fig.colorbar(surf,shrink=0.5,aspect=5)
plt.show()