文章目录
- 主博客:Python 编程笔记(本人出品,必属精品)
- 画图主博客:Python 各种画图

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





