图表辅助元素的定制 2

1.添加参考线和参考区域

(1)  使用axhline()绘制水平参考线
语法:axhline(y=0,xmin=0,xmax=1,linestyle='-',**kwargs)

y:  表示水平参考线的纵坐标.

xmin:  表示水平参考线的起始位置,默认为0 .

xmax:  表示水平参考线的最终位置,默认为1.

linestyle: 表示水平参考线的类型,默认为实线. 

(2)  使用axvline()绘制垂直参考线
语法:axvline(x=0,ymin=0,ymax=1,linestyle='-',**kwargs)

x:  表示水平参考线的纵坐标.

ymin:  表示水平参考线的起始位置,默认为0 .

ymax:  表示水平参考线的最终位置,默认为1.

linestyle: 表示水平参考线的类型,默认为实线. 

# 导入模块
import numpy as np
import matplotlib.pyplot as plt

# 设置中文
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False

#添加标题
plt.title("正弦曲线和余弦曲线")#默认为居中

# 设置正弦和余弦曲线数据
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y1, y2 = np.sin(x), np.cos(x)


# 画出图线
plt.plot(x, y1, x, y2)

# 添加图例
lines = plt.plot(x, y1, x, y2)
plt.legend(lines, ['正弦', '余弦'], shadow=True, fancybox=True)

# 设置x,y轴标签
plt.xlabel("x轴")
plt.ylabel("y轴")

# 展示图像
plt.show()
#添加参考线
plt.axvline(x=0, linestyle='--')
plt.axhline(y=0, linestyle='--')

运行结果如下:

(3)  使用axhspan()绘制水平参考区域
语法:axhspan(ymin,ymax,xmin=0,xmax=1,**kwargs)

ymin:表示水平跨度的下限,以数据为单位.

ymax:表示水平跨度的上限,以数据为单位.

xmin:表示垂直跨度的下限,以轴为单位,默认值为0.

xmax:表示垂直跨度的上限,以轴为单位,默认值为1.

(4)  axvspan()绘制水平参考区域
语法:axvspan(xmin,xmax,ymin=0,ymax=1,**kwargs)

xmin:表示垂直跨度的下限.

xmax:表示垂直跨度的上限.

#添加参考区域
plt.axvspan(xmin=0.5,ymax=2.0,alpha=0.3)
plt.axhspan(ymin=0.5,ymax=1.0,alpha=0.3)

2.添加注释

(1)  添加指向型注释文本
语法:annotate(s,xy,*args,**kwargs)

·s:表示注释文本的内容。
·xy:表示被注释的点的坐标位置,接收元组(xy)。
·xytext:表示注释文本所在的坐标位置,接收元组(x,y)。
·xycoords:表示xy的坐标系统,默认值为“data”,代表与折线图使用相同的坐标系统。
·arrowprops:表示指示箭头的属性字典。
·bbox:表示注释文本的边框属性字典。

#添加指向型注释文本
plt.annotate("最小值",
              xy=(- np.pi/2,-1),
              xytext=(-(np.pi/2),-0.5),
              arrowprops=dict(arrowstyle="->"))

运行如下:

(2)  添加无指向型注释文本
语法:text(x,y,s,fontdict=None, withdash=<deprecated parameter>,**kwargs)

·x,y:表示注释文本的位置。
·s:表示注释文本的内容。
·fontdict:表示控制字体的字典。
·bbox:表示注释文本的边框属性字典。
·horizontalalignment 或 ha:表示水平对齐的方式,可以取值为center、right或left。· ·verticalalignment或 va:表示垂直对齐的方式,可以取值为 center、top、bottom、baseline或       center_baseline。

#添加无指向型注释文本
plt.text(3.10,0.10,"y=sin(x)",bbox=dict(alpha=0.2))

运行结果如下:

3.添加表格

添加自定义样式的表格
语法:table(cellText=None, cellColours=None, cellLoc='right', colWidths=None,
            rowLabels=None, rowColours=None, rowLoc='left', colLabels=None,
            colColours=None, colLoc='center', loc='bottom',
            bbox=None, edges='closed', **kwargs)

·cellText:表示表格单元格中的数据,是一个二维列表。
·cellColours:表示单元格的背景颜色。
·celLoc:表示单元格文本的对齐方式,支持'ef、'right 和'center' 三种取值,聚证'right'。
·colWidths:表示每列的宽度。
·rowLabels:表示行标题的文本。
·rowColours :表示行标题所在单元格的背景颜色。
·rowLoc:表示行标题的对齐方式。
·colLabels:表示列标题的文本。
·colColours:表示列标题所在单元格的背景颜色。
·colLoc:表示列标题的对齐方式。
·loc:表示表格与绘图区域的对齐方式。

#添加表格
plt.table(cellText=[[6,6,6],[8,8,8]],
          colWidths=[0.1]*3,
          rowLabels=['第一行','第二行'],
          colLabels=['第一列','第二列','第三列'],loc='lower right')

运行效果如下:

实例:果酱面包配料比例 

需求一: 图例用4列展示
需求二: 表格填充你喜欢的任意颜色
需求三: 调整图例和表格位置,如运行效果图所示(不要求完全一致,但应做到相似度8成上)。

代码如下:

# 导入模块
import numpy as np
import matplotlib.pyplot as plt

# 显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False

# 绘制饼图
kinds = ['面粉', '全麦粉', '酵母', '苹果酱', '鸡蛋', '黄油', '盐', '白糖']# 配料名称
weight = [250, 150, 4, 250, 50, 30, 4, 20]  # 重量(g)
plt.pie(weight, autopct='%3.1f%%')  # 绘制饼图,取小数点后一位

# 添加图例(通过bbox_to_anchor精细调整图例位置)
plt.legend(kinds,  # 配料名称
           ncol=4,  # 4列图例
           bbox_to_anchor=[1.2, 0.75])  # 精细调整图例位置(在饼图右上方)

# 添加表格(通过bbox精细调整表格位置和大小)
plt.table(cellText=[weight],  # 表示单元格中的数据:重量(g)
          cellLoc='center',  # 表示单元格文本对齐方式为:center
          rowLabels=['重量(g)'],  # 每列的名称
          colLabels=kinds,  # 每列的名称(配料名称)
          bbox=[1.05, 0.17, 0.9, 0.25],  # 表格所在位置(在饼图右下方)
          rowColours='b',  # 填充每行名称的表格颜色
          colColours='r' * 8)  # 填充每列名称的表格颜色

# 展示图表
plt.show()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值