Python 常用线型 + 点符号 + 颜色汇总 ∈ Python 编程笔记

本文详细介绍了Python绘图中线型、点符号和颜色的使用方法。线型包括实线、点线、虚线和点横线,可通过符号字符串或元组自定义样式。点符号涵盖多种形状,如点、方块、星形等,支持希腊字母和其他复杂符号。颜色部分讲解了单词表示颜色、十六进制颜色以及matplotlib默认配色,并展示了如何使用colorbar创建颜色渐变条。此外,还提供了自定义颜色映射和colorbar的示例。
摘要由CSDN通过智能技术生成

Part.I 线型

Chap.I 基本线型

基本线型有四种:

符号字符串元组样式说明
-solid(0, ())实线
:dotted(0, (1, 1))点线
--dashed(0, (3, 1))虚线
-.dashdot(0, (3, 1))点横线

线型绘制代码示例

X = [0,1]
style=['-',':','--','-.']
for i in range(4):
    Y=[i,i]
    plt.plot(X,Y,linestyle=style[i],label =style[i])
plt.legend(loc='best')
plt.show()

可以绘制上述线型大致样子:
在这里插入图片描述

Chap.II 元组线型

用元组表示线型的方法,比如(0,(1,2,3,4,2,2))表示的线型如下:
在这里插入图片描述
其中

  • 0:表示线实际起始点与名义起始点间距为0磅
  • 1,2:第一小段线宽1磅,第一和第二段之间距离2磅
  • 3,4:第二小段线宽3磅,第二和第三段之间距离4磅
  • 2,2:第三小段线宽2磅,第三和第四段之间距离2磅

这后面估计可以无限在后面加的,进而可以产生无限种线型。

Part.II 点符号

Chap.I 基本符号

下面是一些绘图点符号:

符号含义符号含义
'.'point marker's'square marker
','pixel marker'p'pentagon marker
'o'circle marker'*'star marker
'v'triangle_down marker'h'hexagon1 marker
'^'triangle_up marker'H'hexagon2 marker
'<'triangle_left marker'+'plus marker
'>'triangle_right marker'x'x marker
'P'plus(filled)'X'X(filled)
'1'tri_down marker'D'diamond marker
'2'tri_up marker'd'thin_diamond marker
'3'tri_left marker ∣ | vline marker
'4'tri_right marker'_'hline marker
'8'octagon

绘制代码示例

X = list(range(1,26))
Y = list(np.full(25,1))
plt.figure()
mark=['.',',','o','v','^','<','>','1','2','3','4','8',
's','p','P','*','h','H','+','x','X','D','d','|','_']
for i in range(25):
    plt.scatter(X[i],Y[i],marker=mark[i])
plt.xticks(X,mark)
plt.ylim(0.5,1.5)
plt.gca().set_aspect(1)	
plt.show()

可以绘制上述符号大致样子:
在这里插入图片描述

Chap.II 高级符号

这类高级marker使用marker ='$\xxx$'来调用

样式代码样式代码
ϖ\varpi\lceil
ϱ\varrho\lfloor
ς\varsigma\llcorner
ϑ\vartheta\lrcorner
ξ\xi\rangle
ζ\zeta\rceil
Δ\Delta\rfloor
Γ\Gamma\ulcorner
Λ\Lambda\uparrow
Ω\Omega\urcorner
Φ\PhiΘ\Theta
Π\Pi{\{
Ψ\Psi``
Σ\Sigma}\}
Υ\Upsilon\bigwedge
Ξ\Xi\bigcap
\mho\bigcup
\nabla\bigodot
\aleph\bigoplus
\beth\bigotimes
\daleth\biguplus
\gimel\bigvee
\coprod\langle
\Downarrow\int
\Uparrow\oint
\Vert\prod
\downarrow\sum

符号绘制代码示例:

X = list(range(1,200,10))
Y = list(np.full(58,0))
plt.figure()
mark1=['varpi','varrho','varsigma','vartheta','xi','zeta','Delta','Gamma','Lambda','Omega',
'Phi','Pi','Psi','Sigma','Theta','Upsilon','Xi','mho','nabla','aleph']
mark2=['beth','daleth','gimel','Downarrow','Uparrow','Vert','downarrow','langle','{','}',
'lceil','lfloor','llcorner','lrcorner','rangle','rceil','rfloor','ulcorner','uparrow','urcorner']
mark=['vert','|','bigcap','bigcup','bigodot','bigoplus','bigotimes','biguplus','bigvee','bigwedge',
'coprod','int','oint','prod','sum','coprod','int','oint','prod','sum']
for i in range(20):
    str='$\\'+mark[i]+'$'
    plt.scatter(X[i],Y[i],marker=str,s=100)
plt.xticks(X,mark,rotation=60)
plt.ylim(-5,5)
plt.gca().set_aspect(1)	
plt.show()

可以绘制上述符号大致样子:
在这里插入图片描述
值得注意的是,Python还支持自定义marker,它也是使用marker ='$\xx$'来调用,比如$\heartsuit$表示

Part.III 颜色

Chap.I 单词或字母表示颜色

在这里插入图片描述
常用的单字母颜色:

颜色符号
b 蓝色
g 绿色
r 红色
c 青色
m 品红
y 黄色
k 黑色
w 白色

Chap.II 十六进制表示颜色

关于颜色,除了使用单词之外,我们还可以使用16进制来表示颜色。比如#CECECE,表示一种淡淡的灰色。16进制表示颜色是一种常见的方法,我们知道光的三原色是红绿蓝,也就是RGB。在计算机领域常用0-255这256个数字来表示某一个原色的强弱。通过三原色的不同组合,我们可以组合出所有的颜色。一共三种原色,那么自然也就需要三个数字来表示,由于255以内的数字写成16进制只有两位,所以我们可以用6位16进制的数字来代表颜色。

常用十六进制颜色对照表代码查询: https://www.cnblogs.com/planetwithpig/p/11663209.html


十六进制颜色与十进制 RGB 颜色相互转换:'35,26,17'#231A11

def RGB_to_Hex(rgb):
    """ Convert (r,g,b) to 16-进制 """
    RGB = rgb.split(',')            # 将RGB格式划分开来
    color = '#'
    for i in RGB:
        num = int(i)
        # 将R、G、B分别转化为16进制拼接转换并大写  hex() 函数用于将10进制整数转换成16进制,以字符串形式表示
        color += str(hex(num))[-2:].replace('x', '0').upper()
    # print(color)
    return color


def Hex_to_RGB(hex):
    """ Convert 16-进制 to (r,g,b) """
    r = int(hex[1:3],16)
    g = int(hex[3:5],16)
    b = int(hex[5:7], 16)
    rgb = str(r)+','+str(g)+','+str(b)
    print(rgb)
    return rgb

Chap.III matplotlib 默认配色顺序

可以通过下面的代码来输出 matplotlib 的默认配色顺序,笔者输出了前 20 种颜色

import matplotlib.pyplot as plt

for i in range(20):		# 可修改这个数字
    line = plt.plot([i, i])
    c = line[0].get_color()
    plt.annotate(repr(i) + ":"+c, (0, i+0.1))
    print(c)
plt.show()

在这里插入图片描述
前 20 种颜色为:

# matplotlib 前 20 种颜色
default_color=['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd',
               '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf',
               '#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd',
               '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']

Chap.IV 巧用 colorbar


根据colormap来创建多种颜色

cm = plt.cm.get_cmap('RdYlBu_r',nums) 	# 创建 nums 种颜色,保存在 cm 中
c(indx)		# 取出来第 index 种颜色来使用,注意不是用[]而是用()

绘图时根据因变量的值大小来染以不同的颜色

cm = plt.cm.get_cmap('RdYlBu_r',nums)   # RdYlBu_r末尾加r表示颜色取反
plt.scatter(x, y,c=x,cmap=cm)

它的意思是,根据指标 x 的大小来从颜色列表中选取颜色,颜色列表是cm(它是一个colormap)


matplotlib 中所有 cmap 的可选参数
在这里插入图片描述


比如绘制一个协方差矩阵的相关图:

def imshow():
    Q1=[[6.290,5.978,0.544],
        [5.978,6.292,2.340],
        [0.544,2.340,6.288]]

    Q2=[[4.476,0.334,0.230],
        [0.334,1.146,0.082],
        [0.230,0.082,0.626]]
    # ------------ draw -----------
    fig, ax = plt.subplots(nrows=1, ncols=2) 
    plt.subplot(1,2,1)
    plt.imshow(Q1, cmap='YlGn')
    plt.subplot(1,2,2)
    plt.imshow(Q2, cmap='YlGn')
    plt.colorbar(ax=ax,orientation="horizontal") 
    plt.show()
    return

在这里插入图片描述


自定义 colorbar:

from matplotlib.colors import LinearSegmentedColormap, ListedColormap
	colors = ['#211A3F','#453370','#A597B6','#FEF3E8','#D06C9D']	# 元素个数为两个及以上
    colors.reverse()
    cmap1 = ListedColormap(colors)									# 分段 colormap
    cmap2 = LinearSegmentedColormap.from_list('mymap', colors)		# 连续 colormap

比如:

def imshow():
    Q1=[[6.290,5.978,0.544],
        [5.978,6.292,2.340],
        [0.544,2.340,6.288]]

    Q2=[[4.476,0.334,0.230],
        [0.334,1.146,0.082],
        [0.230,0.082,0.626]]
    # ------------ draw -----------
    fig, ax = plt.subplots(nrows=1, ncols=2) 
    plt.subplot(1,2,1)
    colors = ['#211A3F','#453370','#A597B6','#FEF3E8','#D06C9D']
    colors.reverse()
    cmap1 = ListedColormap(colors)
    cmap2 = LinearSegmentedColormap.from_list('mymap', colors)
    plt.imshow(Q1, cmap=cmap1)
    plt.colorbar(orientation="horizontal") 
    plt.subplot(1,2,2)
    plt.imshow(Q2, cmap=cmap2)     # YlGn
    plt.colorbar(orientation="horizontal") 
    plt.show()
    return

在这里插入图片描述
想要控制 colorbar 标签的字体,只需令cb=plt.colorbar(),然后对cb.ax进行设置即可!

Reference

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流浪猪头拯救地球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值