Matplotlib绘制图形Matplotlib绘制图形

这是我参与11月更文挑战的第29天,活动详情查看:2021最后一次更文挑战

Matplotlib绘制图形

基本参数

设置标题 plt.title()

设置坐标轴标签 ply.xlabel() plt.ylabel()

设置坐标轴范围 plt.xlim() plt.ylim()

设置图例 plt.legend()

设置图像大小 plt.figure()

折线图

plot()

参数:

x x轴上的数值

y y轴上的数值

ls 线条风格

lw 线条宽度

c 颜色

label 标签文本

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df=pd.DataFrame(np.random.randn(5,4),columns=['a','b','c','d'])
x=df.index
y=df['a']
plt.plot(x,y,ls='-',lw=2,c='r',label='a')
plt.legend()
plt.show()
复制代码

image-20211129170739165

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False
df=pd.DataFrame(np.random.randn(5,4),columns=['a','b','c','d'])
x=df.index
y=df['a']
plt.plot(x,y,ls='-',lw=2,c='r')
y=df['b']
plt.plot(x,y,ls='-',lw=2,c='b')
y=df['c']
plt.plot(x,y,ls='-',lw=2,c='y')
y=df['d']
plt.plot(x,y,ls='-',lw=2,c='g')
plt.title('折线图')
# 设置图例
plt.legend(df.columns)
plt.show()
复制代码

image-20211130093414034

柱状图

bar()

基本参数

x x轴上的数值

y y轴上的数值

color 颜色

label 标签文本

plt.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False
df=pd.DataFrame(np.random.rand(5,4),columns=['a','b','c','d'])
x=df.index
y=df['a']
plt.ylabel('x')
plt.xlabel('y')
plt.title('柱状图')
plt.bar(x,y,color='b')
plt.show()
复制代码

image-20211130094904610

条形图(横柱状图)

barh()

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False
df=pd.DataFrame(np.random.rand(5,4),columns=['a','b','c','d'])
x=df.index
y=df['a']
plt.ylabel('x')
plt.xlabel('y')
plt.title('柱状图')
plt.barh(x,y,color='b')
plt.show()
复制代码

image-20211130095741444

散点图

scatter()

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False
df=pd.DataFrame(np.random.rand(100,4),columns=['a','b','c','d'])
x=df.index
y=df['a']
plt.ylabel('x')
plt.xlabel('y')
plt.title('散点图')
plt.scatter(x,y,color='b')
plt.show()
复制代码

image-20211130102821232

s 设置标记的大小

marker 设置标记的形状

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False
df=pd.DataFrame(np.random.rand(100,4),columns=['a','b','c','d'])
x=df.index
y=df['a']
plt.ylabel('x')
plt.xlabel('y')
plt.title('散点图')
plt.scatter(x,y,s=5,color='b',marker=6)
plt.show()
复制代码

image-20211130102756269

marker 参数

============================== ====== =========================================
marker                         symbol description
============================== ====== =========================================
``"."``                        |m00|  point
``","``                        |m01|  pixel
``"o"``                        |m02|  circle
``"v"``                        |m03|  triangle_down
``"^"``                        |m04|  triangle_up
``"<"``                        |m05|  triangle_left
``">"``                        |m06|  triangle_right
``"1"``                        |m07|  tri_down
``"2"``                        |m08|  tri_up
``"3"``                        |m09|  tri_left
``"4"``                        |m10|  tri_right
``"8"``                        |m11|  octagon
``"s"``                        |m12|  square
``"p"``                        |m13|  pentagon
``"P"``                        |m23|  plus (filled)
``"*"``                        |m14|  star
``"h"``                        |m15|  hexagon1
``"H"``                        |m16|  hexagon2
``"+"``                        |m17|  plus
``"x"``                        |m18|  x
``"X"``                        |m24|  x (filled)
``"D"``                        |m19|  diamond
``"d"``                        |m20|  thin_diamond
``"|"``                        |m21|  vline
``"_"``                        |m22|  hline
``0`` (``TICKLEFT``)           |m25|  tickleft
``1`` (``TICKRIGHT``)          |m26|  tickright
``2`` (``TICKUP``)             |m27|  tickup
``3`` (``TICKDOWN``)           |m28|  tickdown
``4`` (``CARETLEFT``)          |m29|  caretleft
``5`` (``CARETRIGHT``)         |m30|  caretright
``6`` (``CARETUP``)            |m31|  caretup
``7`` (``CARETDOWN``)          |m32|  caretdown
``8`` (``CARETLEFTBASE``)      |m33|  caretleft (centered at base)
``9`` (``CARETRIGHTBASE``)     |m34|  caretright (centered at base)
``10`` (``CARETUPBASE``)       |m35|  caretup (centered at base)
``11`` (``CARETDOWNBASE``)     |m36|  caretdown (centered at base)
复制代码

多图

subplot(1,2,1)

第一个参数表示 几行分布

第二个参数表示 一行记个图

第三个参数表示 图显示的位置

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False
df=pd.DataFrame(np.random.rand(100,4),columns=['a','b','c','d'])
x=df.index
y=df['a']
plt.subplot(2,3,1)
plt.scatter(x,y,color='b')
plt.subplot(2,3,2)
y=df['b']
plt.scatter(x,y,s=5,color='b',marker=6)
plt.subplot(2,3,6)
y=df['b']
plt.scatter(x,y,s=5,color='b',marker=6)
plt.show()
复制代码

image-20211130103350507

subplots_adjust设置图像高宽

subplots 减少区域分块后 设置子图的title 和xy轴

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False
df=pd.DataFrame(np.random.rand(100,4),columns=['a','b','c','d'])
x=df.index
y=df['a']
fig,ax=plt.subplots(2,3)
ax1=ax[0][0]
ax1.set_title('1')
ax1.set_ylabel('y')
ax1.set_xlabel('x')
ax1.scatter(x,y,color='b')
ax2=ax[0][2]
ax2.set_title('2')
ax2.scatter(x,y,color='r')
ax3=ax[1][1]
ax3.set_title('3')
ax3.scatter(x,y,color='g')
plt.subplots_adjust(wspace=2,hspace=2)
plt.show()
复制代码

image-20211130105509309