- UID
- 2
- 积分
- 2874604
- 威望
- 1387331 布
- 龙e币
- 1487273 刀
- 在线时间
- 13155 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-11-24
|
Matplotlib(绘图库)- 其他类型图【绘制散点图、条形图、等高线图、饼状图、直方图、3D图等】
1 散点图
使用 scatter() 绘制散点图。- import matplotlib.pyplot as plt # 为方便简介为plt
- import numpy as np # 画图过程中会使用numpy
- import pandas as pd # 画图过程中会使用pandas
- # 使用numpy产生数据
- fig = plt.figure() # 创建一个窗口
- ax = fig.add_subplot(1,1,1) # 在窗口上添加一个子图
- x = np.random.random(100) # 产生随机数组
- y = np.random.random(100) # 产生随机数组
- ax.scatter(x,y,s = x*100,c = 'y',marker = (5,1),alpha = 0.5,lw = 2,facecolors = 'none')
- # x横坐标,y纵坐标,s图像大小,c颜色,marker图片,lw图像边框宽度
- plt.show() # 显示图像
复制代码 实例效果图如下:
2 条形图
使用 bar() 绘制条形图。- import matplotlib.pyplot as plt # 为方便简介为plt
- import numpy as np # 画图过程中会使用numpy
- import pandas as pd # 画图过程中会使用pandas
- n = 12
- X = np.arange(n)
- Y1 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)
- Y2 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)
- fig = plt.figure() #创建一个窗口
- ax=fig.add_subplot(1,1,1) #添加一个子图
- ax.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
- ax.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
- for x,y in zip(X,Y1):
- plt.text(x, y+0.05, '%.2f' % y, ha='center', va= 'bottom')
- plt.ylim(-1.25,+1.25)
- plt.show()
复制代码 实力效果图如下:
3 等高线图
使用 contourf() 绘制等高线图。- import matplotlib.pyplot as plt # 为方便简介为plt
- import numpy as np # 画图过程中会使用numpy
- import pandas as pd # 画图过程中会使用pandas
- def f(x,y): return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
- n = 256
- x = np.linspace(-3,3,n)
- y = np.linspace(-3,3,n)
- X,Y = np.meshgrid(x,y)
- fig = plt.figure() #创建一个窗口
- ax=fig.add_subplot(1,1,1) #添加一个子图
- ax.contourf(X, Y, f(X,Y), 8, alpha=.75, cmap='jet')
- ax.contour(X, Y, f(X,Y), 8, colors='black', linewidth=.5)
- plt.show()
复制代码 实例效果图如下:
4 饼状图
使用 pie() 绘制饼状图。- import matplotlib.pyplot as plt # 为方便简介为plt
- import numpy as np # 画图过程中会使用numpy
- import pandas as pd # 画图过程中会使用pandas
- plt.rcParams['font.sans-serif'] = ['SimHei']
- plt.rcParams['axes.unicode_minus'] = False
- label_list = ["第一部分", "第二部分", "第三部分"] # 各部分标签
- size = [55, 35, 10] # 各部分大小
- color = ["red", "green", "blue"] # 各部分颜色
- explode = [0.05, 0, 0] # 各部分突出值
- '''
- 绘制饼图
- explode:设置各部分突出
- label:设置各部分标签
- labeldistance:设置标签文本距圆心位置,1.1表示1.1倍半径
- autopct:设置圆里面文本
- shadow:设置是否有阴影
- startangle:起始角度,默认从0开始逆时针转
- pctdistance:设置圆内文本距圆心距离
- 返回值
- l_text:圆内部文本,matplotlib.text.Text object
- p_text:圆外部文本
- '''
- plt.pie(size, explode=explode, colors=color, labels=label_list, labeldistance=1.1, autopct="%1.1f%%", shadow=False, startangle=90, pctdistance=0.6)
- plt.axis("equal") # 设置横轴和纵轴大小相等,这样饼才是圆的
- plt.legend()
- plt.show()
复制代码 实例效果图如下:
5 直方图
使用 hist() 绘制直方图。- import matplotlib.pyplot as plt # 为方便简介为plt
- import numpy as np # 画图过程中会使用numpy
- import pandas as pd # 画图过程中会使用pandas
- # 设置matplotlib正常显示中文和负号
- plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
- plt.rcParams['axes.unicode_minus']=False # 正常显示负号
- # 随机生成(10000,)服从正态分布的数据
- data = np.random.randn(10000)
- '''
- 绘制直方图
- data:必选参数,绘图数据
- bins:直方图的长条形数目,可选项,默认为10
- normed:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。
- facecolor:长条形的颜色
- edgecolor:长条形边框的颜色
- alpha:透明度
- '''
- #plt.hist(data, bins=40, normed=0, facecolor="blue", edgecolor="black", alpha=0.7)
- plt.hist(data, bins=40, facecolor="blue", edgecolor="black", alpha=0.7)
- # 显示横轴标签
- plt.xlabel("区间")
- # 显示纵轴标签
- plt.ylabel("频数/频率")
- # 显示图标题
- plt.title("频数/频率分布直方图")
- plt.show()
复制代码 实例效果图如下:
6 3D图
使用 plot_surface() 绘制直方图。- import matplotlib.pyplot as plt # 为方便简介为plt
- import numpy as np # 画图过程中会使用numpy
- import pandas as pd # 画图过程中会使用pandas
- X = np.arange(-4, 4, 0.25)
- Y = np.arange(-4, 4, 0.25)
- X, Y = np.meshgrid(X, Y)
- R = np.sqrt(X**2 + Y**2)
- Z = np.sin(R)
- fig = plt.figure() # 先创建窗口一个窗口
- ax1 = fig.add_subplot(1,1,1,projection='3d')
- ax1.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='hot')
- plt.show()
复制代码 实例效果图如下:
|
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|