matplotlib 的 marker 颜色更改

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

背景

  • win10, anaconda 4.8.3, python 3.8.3
  • matplotlib.pyplot图形的marker, 有时颜色更改不起作用(暂这样描述), markerfacecolor不起作用
  • 类似plt.plot(x,y,‘bo’)的办法,无法对marker的填色(markerfaceecolor) 和 边缘色 (markeredgecolor)同时更改

办法

  • 更改plt.plot(x, y, ‘bo’) 为 plt.plot(x,y, ‘o’, markeredgecolor=‘b’, markerfacecolor=‘r’, markersize=10) #方便查验
  • 可能的坑: 有的marker, markerfacecolor不起作用, 只有markeredgecolor起作用,比如 +, x, |, -, 四个方向的类似 Y 负号的图形,
  • plt.Line2D.filled_markers中的符号,都可以用face 与 edge color来定义填色和边缘色
  • plt.Line2D.markers中,除filled_markers和个别nothing的部分,也就是 unfilled_markers部分(没有直接的方法取得),第一个也适用face/edge color, 其余都不适用。
  • 有的 unfilled_markers,没有符号出现在绘图里。待进一步练习、探查。
  • 例子见下
  • `#
    #输出画图中的全部 有 填充效果的marker — filled_markers
    #输出画图中的全部 无 填充效果的marker — unfilled_markers = markers - “filled_markers + nothing”

#filled_markers, 才有makerfacecolor的效果, 还有markeredgecolor
#unfilled_markers, 只有markeredgecolor才有效果. makerfacecolor无错误提示但没有效果

#参考https://matplotlib.org/gallery/lines_bars_and_markers/marker_reference.html

import matplotlib as mpl
import matplotlib.pyplot as plt

fig, ax=plt.subplots(2,22)

x=[0,1,2,3,5,6]
y=[0,1,4,16,25,36]

filled_markers=[m for m in plt.Line2D.filled_markers]
unfilled_markers=[m for m, func in plt.Line2D.markers.items() if func != ‘nothing’ and m not in filled_markers]

#print(‘filled_markers:’, filled_markers, flush=True)
#print(‘unfilled_markers:’, unfilled_markers, flush=True)

for i_plt in range(0 ,15):
#print(‘i_plt:’, i_plt, flush=True)
ax[0][i_plt].plot(x,y, filled_markers[i_plt], markerfacecolor=‘r’, markeredgecolor=‘b’, markersize=10)

for i_plt in range(22, 44):
#print(‘i_plt-22:’, (i_plt-22), flush=True)
ax[1][i_plt-22].plot(x,y, unfilled_markers[i_plt-22], markerfacecolor=‘r’, markeredgecolor=‘k’, markersize=10)

plt.show()`

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值