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()
绘制不规则子图
前面的两个图占了221和222的位置,如果想在下面只放一个图,得把前两个当成一列,即2行1列第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)
一个周游世界的农夫,喜欢写代码和诗
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架