matplotlib 笔记

颜色:
蓝色 - 'b' 绿色 - 'g' 红色 - 'r' 青色 - 'c' 品红 - 'm' 黄色 - 'y' 黑色 - 'k'('b'代表蓝色,所以这里用黑色的最后一个字母) 白色 - 'w', 粉色 - ‘p’

线: 直线 - '-' 虚线 - '--' 点线 - ':' 点划线 - '-.'

常用点标记 点 - '.' 像素 - ',' 圆 - 'o' 方形 - 's' 三角形 - '^' 更多点标记样式点击这里
marker 可以定义的符号如下:


散点图

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import colors  # 注意!为了调整“色盘”,需要导入colors

rng = np.random.RandomState(0)
x = rng.randn(50)
y = rng.randn(50)
color = rng.rand(50)
sizes = 700 * rng.rand(50)

changecolor = colors.Normalize(vmin=0.4, vmax=0.8)

plt.scatter(x, y, c=color, s=sizes, alpha=0.3, cmap='viridis',norm=changecolor)

plt.colorbar()
plt.show()

cmap 就是 color map
imshow 是用来画灰度图

fig和axis的区别?

相信不少小伙伴一开始都是直接用plt.plot来绘图,非常简单,但这是偷懒的做法,不建议大家这样。
fig, ax = plt.subplots(2,2)是比较正统的画法(参数代表行列数),指定figure和axes,然后对axes单独进行操作(图表元素增加和修改)。
fig相当于是一个大的画布,ax相当于是小的子图,一个画布可以有一个或多个子图。
单个图表任何操作都是在axes对象上进行的,包括坐标轴、刻度、图例等。

fig, axs = plt.subplots(2, 1, constrained_layout=True)
就是两个子图左右并排的

fig, axs = plt.subplots(1, 2)
就是两个子图上下排列


将图左右翻转
plt.gca().invert_xaxis()
将图上下翻转
plt.gca().invert_yaxis()

画多个子图的四种画法【https://cloud.tencent.com/developer/article/1971951】

方法一:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
# 画第1个图:折线图
x=np.arange(1,100)
plt.subplot(221)
plt.plot(x,x*x)
# 画第2个图:散点图
plt.subplot(222)
plt.scatter(np.arange(0,10), np.random.rand(10))
# 画第3个图:饼图
plt.subplot(223)
plt.pie(x=[15,30,45,10],labels=list('ABCD'),autopct='%.0f',explode=[0,0.05,0,0])
# 画第4个图:条形图
plt.subplot(224)
plt.bar([20,10,30,25,15],[25,15,35,30,20],color='b')
plt.show()

方法二:通过figure的add_subplot
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
fig=plt.figure()
# 画第1个图:折线图
x=np.arange(1,100)
ax1=fig.add_subplot(221)
ax1.plot(x,x*x)
# 画第2个图:散点图
ax2=fig.add_subplot(222)
ax2.scatter(np.arange(0,10), np.random.rand(10))
# 画第3个图:饼图
ax3=fig.add_subplot(223)
ax3.pie(x=[15,30,45,10],labels=list('ABCD'),autopct='%.0f',explode=[0,0.05,0,0])
# 画第4个图:条形图
ax4=fig.add_subplot(224)
ax4.bar([20,10,30,25,15],[25,15,35,30,20],color='b')
plt.show()

「方式三:通过plt的subplots」subplots返回的值的类型为元组,其中包含两个元素:第一个为一个画布,第二个是子图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

fig,ax=plt.subplots(2,2)
# 画第1个图:折线图
x=np.arange(1,100)
ax[0][0].plot(x,x*x)
# 画第2个图:散点图
ax[0][1].scatter(np.arange(0,10), np.random.rand(10))
# 画第3个图:饼图
ax[1][0].pie(x=[15,30,45,10],labels=list('ABCD'),autopct='%.0f',explode=[0,0.05,0,0])
# 画第4个图:条形图
ax[1][1].bar([20,10,30,25,15],[25,15,35,30,20],color='b')
plt.show()

绘制不规则子图
前面的两个图占了221222的位置,如果想在下面只放一个图,得把前两个当成一列,即21列第2个位置。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
# 画第1个图:折线图
x=np.arange(1,100)
plt.subplot(221)
plt.plot(x,x*x)
# 画第2个图:散点图
plt.subplot(222)
plt.scatter(np.arange(0,10), np.random.rand(10))
# 画第3个图:条形图
# 前面的两个图占了221和222的位置,如果想在下面只放一个图,得把前两个当成一列,即2行1列第2个位置
plt.subplot(212)
plt.bar([20,10,30,25,15],[25,15,35,30,20],color='b')
plt.show()

加errbar,水平柱状图

means_women = (25, 32, 34, 20, 25)
std_women = (3, 5, 2, 3, 3)
fig, ax = plt.subplots()

index = np.arange(n_groups)
bar_width = 0.5

opacity = 0.4
error_config = {'ecolor': '0.3'}
rects2 = ax.barh(index + bar_width, means_women, bar_width,
                alpha=opacity, color='r',
                xerr=std_women, error_kw=error_config,
                label='Women')

ax.set_ylabel('Group')
ax.set_xlabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_yticks(index + bar_width / 2)
ax.set_yticklabels(('A', 'B', 'C', 'D', 'E'))
#plt.gca().invert_yaxis()
ax.legend()

fig.tight_layout()
plt.show()

df.plot(x="X", y=["A", "B", "C"], kind="bar”)

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

y = np.random.rand(10,4)
y[:,0]= np.arange(10)
df = pd.DataFrame(y, columns=["X", "A", "B", "C"])

ax = df.plot(x="X", y="A", kind="bar")
df.plot(x="X", y="B", kind="bar", ax=ax, color="C2")
df.plot(x="X", y="C", kind="bar", ax=ax, color="C3")

plt.show()

or

df[["X", "A", "B", "C"]].plot(x="X", kind="bar")

使用下面的方法可以将dataframe数据转换为Geodataframe数据

point = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df.GCJ02_loc, df.GCJ02_lat))

subplot(233)表示在当前画布的右上角创建一个两行三列的绘图区域,同时,选择在第 3 个位置绘制子图。

在matplotlib一般使用plt.figure来设置窗口尺寸。

plt.figure(figsize=(10, 10)) 

生成三角波的最简单方法是使用signal.sawtooth。注意signal.sawtooth(phi,width)接受两个参数。第一个参数是阶段,下一个参数指定对称性。宽度= 1给出右侧锯齿,宽度= 0给出左侧锯齿,宽度= 0.5给出对称三角形。请享用!

from scipy import signal 
import numpy as np 
import matplotlib.pyplot as plt 
t = np.linspace(0, 1, 500) 
triangle = signal.sawtooth(2 * np.pi * 5 * t, 0.5) 
plt.plot(t, triangle) 
posted @   周倩如  阅读(10)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示