1. matplotlib¶
1.1安装matplotli¶
In [2]:
pip install matplotlib
Requirement already satisfied: matplotlib in c:\programdata\anaconda3\lib\site-packages (3.8.0) Requirement already satisfied: contourpy>=1.0.1 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (1.2.0) Requirement already satisfied: cycler>=0.10 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (0.11.0) Requirement already satisfied: fonttools>=4.22.0 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (4.25.0) Requirement already satisfied: kiwisolver>=1.0.1 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (1.4.4) Requirement already satisfied: numpy<2,>=1.21 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (1.26.4) Requirement already satisfied: packaging>=20.0 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (23.1) Requirement already satisfied: pillow>=6.2.0 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (10.2.0) Requirement already satisfied: pyparsing>=2.3.1 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (3.0.9) Requirement already satisfied: python-dateutil>=2.7 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (2.8.2) Requirement already satisfied: six>=1.5 in c:\programdata\anaconda3\lib\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0) Note: you may need to restart the kernel to use updated packages.
1.2导入matplotlib¶
In [8]:
import matplotlib
1.3检测版本¶
In [11]:
print(matplotlib.__version__)
3.8.0
2. PYPLOT¶
2.1 pyplot¶
In [19]:
import matplotlib.pyplot as plt
In [25]:
# 在图中从位置(0,0)到(6,250)画一条直线
import numpy as np
xpoints = np.array([0,6])
ypoints = np.array([0,250])
plt.plot(xpoints,ypoints)
plt.show()
3. 绘图¶
3.1 绘制x点和y点¶
- plot()函数用于在图表中绘制点(标记)
- 默认情况下,plot()函数从点到点绘制一条直线
- 该函数采用参数来指定图中的点
- 参数1是一个包含x轴上的点的数组
- 参数2是一个包含y轴上的点的数组
- 如果我们需要绘制一条从(1,3),到(8,10)的线,我们必须将两个数组[1,8]和[3,10]传递给plot()函数
In [30]:
import matplotlib.pyplot as plt
import numpy as np
In [34]:
# 绘制一条从(1,3),到(8,10)的线
xpoints = np.array([1,8])
ypoints = np.array([3,10])
plt.plot(xpoints,ypoints)
plt.show()
3.2 无线绘图¶
- 在图中绘制两个点,一个在(1,3),一个在(8,10)
In [38]:
plt.plot(xpoints,ypoints,'o')
plt.show()
3.3 多点绘图¶
In [43]:
# 在图中画一条线,从位置(1,3)到(2,8)然后到(6,1)最后到(8.10)
xpoints = np.array([1,2,6,8])
ypoints = np.array([3,8,1,10])
plt.plot(xpoints,ypoints)
plt.show()
In [48]:
ypoints = np.array([3,8,1,10,5,7])
plt.plot(ypoints)
plt.show()
4. 标记¶
4.1 标记¶
使用关键字marker,用指定的标记强调每个点
In [8]:
import matplotlib.pyplot as plt
import numpy as np
In [53]:
ypoints = np.array([3,8,1,10])
plt.plot(ypoints,marker = 'o')
plt.show()
In [55]:
# 用星星标记每个点
plt.plot(ypoints,marker = '*')
Out[55]:
[<matplotlib.lines.Line2D at 0x2974b17e790>]
4.2使用fmt格式化字符串¶
In [59]:
# 使用fmt格式定义线的类型
# marker | line | color
ypoints = np.array([3,8,1,10])
plt.plot(ypoints,'o:r')
plt.show()
4.3 标记尺寸¶
In [10]:
# markersize 或 ms 来设置标记的大小尺寸
ypoints = np.array([3, 8, 1, 10])
plt.plot(ypoints,marker = 'o', ms = 20)
plt.show()
4.4 标记颜色¶
In [13]:
# 使用关键字参数 markeredgecolor 或 mec 来设置标记边缘的颜色
ypoints = np.array([3, 8, 1, 10])
plt.plot(ypoints,marker = 'o', ms = 20, mec = 'r')
plt.show()
In [17]:
# 关键字 markerfacecolor 或较短的 mfc 来设置标记边缘内的颜色
ypoints = np.array([3, 8, 1, 10])
plt.plot(ypoints,marker = 'o', ms = 20, mfc = 'r')
plt.show()
In [19]:
ypoints = np.array([3, 8, 1, 10])
plt.plot(ypoints,marker = 'o', ms = 20, mec = 'r', mfc = 'r')
plt.show()
In [21]:
# 还可以使用十六进制颜色值
plt.plot(ypoints,marker = 'o', ms = 20, mec = '#4CAF50', mfc = '#4CAF50')
Out[21]:
[<matplotlib.lines.Line2D at 0x1aded097510>]
In [23]:
# 140种支持的颜色名称中的任意一种
plt.plot(ypoints,marker = 'o', ms = 20, mec = 'hotpink', mfc = 'hotpink')
Out[23]:
[<matplotlib.lines.Line2D at 0x1aded0e0a90>]
5. 线条¶
5.1 线条¶
In [27]:
# 可以使用关键字参数 linestyle 或 ls 来更改绘制线的样式
ypoints = np.array([3, 8, 1, 10])
plt.plot(ypoints, linestyle = 'dotted')
plt.show()
In [33]:
plt.plot(ypoints, ls = '--')
Out[33]:
[<matplotlib.lines.Line2D at 0x1aded1e9ad0>]
5.3 线条颜色¶
color 或 c 来设置线条的颜色
In [39]:
plt.plot(ypoints, color = 'r')
Out[39]:
[<matplotlib.lines.Line2D at 0x1aded095890>]
In [47]:
# 也可以使用十六进制
plt.plot(ypoints, color = '#4ACF50')
Out[47]:
[<matplotlib.lines.Line2D at 0x1aded2c1410>]
In [49]:
# 140 种支持的颜色中的任意一种
plt.plot(ypoints, c = 'hotpink')
Out[49]:
[<matplotlib.lines.Line2D at 0x1aded2fa710>]
In [55]:
ypoints = np.array([3, 8, 1, 10])
plt.plot(ypoints, linewidth = '20')
plt.show()
5.5 多行¶
通过简单的添加更多 plt.plot()函数来绘制任意数量的线:
In [58]:
y1 = np.array([3, 8, 1, 10])
y2 = np.array([6, 2, 7, 11])
plt.plot(y1)
plt.plot(y2)
plt.show()
In [62]:
# 还可以通过在同一 plt.plot()函数中为每条线添加x轴和y轴的点来绘制多条线
x1 = np.array([0, 1, 2, 3])
y1 = np.array([3, 8, 1, 10])
x2 = np.array([0, 1, 2, 3])
y2 = np.array([6, 2, 7, 11])
plt.plot(x1, y1, x2, y2)
Out[62]:
[<matplotlib.lines.Line2D at 0x1adee3b3e50>, <matplotlib.lines.Line2D at 0x1adee3b2790>]
6. 标签¶
6.1 标签¶
使用 Pyplot,使用xlabel() 和 ylabel() 函数为x轴和y轴设置标签
In [75]:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['font.sans-serif']=['KaiTi' ] # 设置matolotlib字体为 楷体
In [83]:
x = np. array([80,85,90,95,100,105,110,115,120,125])
y = np.array([240,250,260,270,280,290,300,310,320,330])
plt.plot(x, y)
plt.xlabel("平均脉搏")
plt.ylabel("卡路里消耗量")
plt. show()
6.2为绘图创建标题¶
使用 Pyplot,可以使用title()函数为绘图设置标题
In [86]:
x = np. array([80,85,90,95,100,105,110,115,120,125])
y = np.array([240,250,260,270,280,290,300,310,320,330])
plt.plot(x, y)
plt.title("运动手表数据")
plt.xlabel("平均脉搏")
plt.ylabel("卡路里消耗量")
plt. show()
6.3 设置标题和标签的字体属性¶
使用xlabel()、ylabel、title()中的fontdict参数来设置标题和标签的字体属性
In [101]:
x = np. array([80,85,90,95,100,105,110,115,120,125])
y = np.array([240,250,260,270,280,290,300,310,320,330])
font1 = {'family':'serif','color':'blue','size':20}
font2 = {'family':'serif','color':'darkred','size':15}
plt.title("运动手表数据", fontdict = font1)
plt.xlabel("平均脉搏", fontdict = font2)
plt.ylabel("卡路里消耗量", fontdict = font2)
plt.plot(x, y)
plt. show()
6.4 定位标题位置¶
使用title() 中的 loc参数来定位标题
合法值是:"left","right","center", 默认值为: "center"
In [105]:
x = np. array([80,85,90,95,100,105,110,115,120,125])
y = np.array([240,250,260,270,280,290,300,310,320,330])
plt.plot(x, y)
plt.title("运动手表数据", loc = "left")
plt.xlabel("平均脉搏")
plt.ylabel("卡路里消耗量")
plt. show()
In [107]:
x = np. array([80,85,90,95,100,105,110,115,120,125])
y = np.array([240,250,260,270,280,290,300,310,320,330])
plt.title("运动手表数据", loc = "right")
plt.xlabel("平均脉搏")
plt.ylabel("卡路里消耗量")
plt.plot(x, y)
plt. show()
7. 网格线¶
7.1 向绘图中添加网格线¶
使用Pyplot,使用 grid() 函数将网格线添加到绘图中。
In [110]:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['font.sans-serif']=['KaiTi' ] # 设置matolotlib字体为 楷体
In [112]:
x = np. array([80,85,90,95,100,105,110,115,120,125])
y = np.array([240,250,260,270,280,290,300,310,320,330])
plt.title("运动手表数据")
plt.xlabel("平均脉搏")
plt.ylabel("卡路里消耗量")
plt.plot(x, y)
plt.grid()
plt. show()
7.2 指定要显示的网格线¶
使用 grid() 函数中的 axis = "axis" 轴参数来指定要显示的网格线
合法值为:"x", "y"和"both"。 默认值为"both"。
In [117]:
x = np. array([80,85,90,95,100,105,110,115,120,125])
y = np.array([240,250,260,270,280,290,300,310,320,330])
plt.title("运动手表数据")
plt.xlabel("平均脉搏")
plt.ylabel("卡路里消耗量")
plt.plot(x, y)
plt.grid(axis = "x")
plt. show()
In [119]:
x = np. array([80,85,90,95,100,105,110,115,120,125])
y = np.array([240,250,260,270,280,290,300,310,320,330])
plt.title("运动手表数据")
plt.xlabel("平均脉搏")
plt.ylabel("卡路里消耗量")
plt.plot(x, y)
plt.grid(axis = "y")
plt. show()
7.3 设置网格线的属性¶
可以设置网格的线条属性,如下所示:grid(color = 'color', linestyle = 'linestyle', linewidth = number)
In [122]:
x = np. array([80,85,90,95,100,105,110,115,120,125])
y = np.array([240,250,260,270,280,290,300,310,320,330])
plt.title("运动手表数据")
plt.xlabel("平均脉搏")
plt.ylabel("卡路里消耗量")
plt.plot(x, y)
plt.grid(color = 'green', linestyle = '--', linewidth = 1.5)
plt. show()
8. 多图¶
8.1 显示多个图¶
使用 subplots() 函数,可以在一张图上绘制多个图
In [127]:
import matplotlib.pyplot as plt
import numpy as np
In [129]:
# plot1
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])
# 第一个子图
plt.subplot(1, 2, 1)
"""参数解释
第一个参数(1):表示子图的行数。在这个例子中,子图被组织成一行。
第二个参数(2):表示子图的列数。在这个例子中,子图被组织成两列。
第三个参数(1):表示当前子图的位置。在这个例子中,当前子图是第一行第一列的子图。
"""
plt.plot(x,y)
# plot2
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])
# 第二个子图
plt.subplot(1, 2, 2)
plt.plot(x, y)
plt.show()
8.2 subplots() 函数¶
subplots()函数 采用三个参数来描述图形的布局
布局按行和列组织,由第一个和第二个参数来表示,第三个参数表示当前绘图的索引
如果我们想要一个2行1列的图形(这意味着图片将以垂直的形式进行排列,而不是并排显示),语法如下:
In [133]:
# plot1
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])
# 第一个子图
plt.subplot(2, 1, 1)
"""参数解释
第一个参数(1):表示子图的行数。在这个例子中,子图被组织成一行。
第二个参数(2):表示子图的列数。在这个例子中,子图被组织成两列。
第三个参数(1):表示当前子图的位置。在这个例子中,当前子图是第一行第一列的子图。
"""
plt.plot(x,y)
# plot2
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])
# 第二个子图
plt.subplot(2, 1, 2)
plt.plot(x, y)
plt.show()
In [139]:
# 两行三列图
#plot1
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])
plt.subplot(2, 3, 1)
plt.plot(x, y)
# plot2
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])
plt.subplot(2, 3, 2)
plt.plot(x, y)
# plot3
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])
plt.subplot(2, 3, 3)
plt.plot(x, y)
# plot4
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])
plt.subplot(2, 3, 4)
plt.plot(x, y)
# plot5
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])
plt.subplot(2, 3, 5)
plt.plot(x, y)
# plot6
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])
plt.subplot(2, 3, 6)
plt.plot(x, y)
Out[139]:
[<matplotlib.lines.Line2D at 0x1adeec0fa90>]
8.3 标题¶
使用 title() 函数为每个子图添加标题
In [150]:
#plot1
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])
plt.subplot(1, 2, 1)
plt.plot(x, y)
plt.title("SALES")
# plot2
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])
plt.subplot(1, 2, 2)
plt.plot(x, y)
plt.title("INCOME")
plt.show()
8.4 超级标题¶
使用suptitle()函数为整个图形添加标题
In [153]:
#plot1
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])
plt.subplot(1, 2, 1)
plt.plot(x, y)
plt.title("SALES")
# plot2
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])
plt.subplot(1, 2, 2)
plt.plot(x, y)
plt.title("INCOME")
plt.suptitle("MY SHOP")
plt.show()
9. 散点图¶
9.1 散点图¶
借助Pyplot,是哟个scatter() 函数绘制散点图
scatter()函数为每个观察绘制一个点,它需要两个长度一致的数组,一个用于x的值,另一个用于y的值。
In [158]:
x = np.array([5, 7, 8, 7, 2, 17, 2,9, 4, 11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt. scatter(x, y)
plt.show()
9.2 颜色¶
使用color 或 c 参数来为每个散点图设置自己的颜色。
In [ ]:
import matplotlib.pyplot as plt
import numpy as np
In [165]:
x = np.array([5, 7, 8, 7, 2, 17, 2,9, 4, 11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt. scatter(x, y, c = 'hotpink')
x=np.array([2, 2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y=np.array([100,105,84,105,90,99,90, 95, 94, 100, 79, 112, 91, 80, 85])
plt.scatter (x,y,color='#88c999')
plt.show()
9.3 给每个点上色¶
可以通过颜色数组作为 c 的参数的值来为每个点设置特定的颜色
不能为此使用 color 参数,只能使用 c 参数
In [178]:
x = np.array([5, 7, 8, 7, 2, 17,2,9,4, 11, 12, 9,6])
y = np.array([99,86,87,88,111,86,103,87, 94, 78, 77,85,86])
colors = np.array(["red","green", "blue","yellow","pink", "black", "orange", "purple", "beige", "brown", "gray","cyan","magenta"])
plt.scatter(x, y, c=colors)
plt.show()
9.4 颜色图¶
Matplotlib 模块有许多可用的颜色图
颜色图就像一个颜色列表,其中每种颜色都有一个范围从 0 到 100
有一个颜色图名叫 "viridis", 从紫色渐变到黄色,值从 0 到 100
In [191]:
#通过 plt.colorbar()语句在绘图中包含颜色图
x = np.array([5, 7,8, 7, 2, 17, 2,9, 4, 11,12, 9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0,10,20,30,40,45,50,55,60,70,80,90,100])
plt.scatter(x, y, c=colors, cmap='viridis')
plt.colorbar ()
plt.show()
具体有哪些可用的颜色图,请参考此文档:https://matplotlib.org/stable/tutorials/colors/colormaps.html¶
9.5 尺寸¶
使用 s 来更改点的大小
就像颜色一样,确保大小数组与x和y轴的的数组长度相同
In [198]:
x = np.array([5, 7,8, 7, 2, 17,2,9,4,11,12, 9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])
plt.scatter(x, y, s=sizes)
plt.show()
9.6 透明度¶
可以使用 alpha 参数调整点的透明度
In [205]:
x = np.array([5, 7,8, 7, 2, 17,2,9,4,11,12, 9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])
plt.scatter(x, y, s=sizes, alpha = 0.5)
plt.show()
9.7 颜色、尺寸、透明度结合¶
In [214]:
x = np.random.randint(100,size=(100))
y = np.random.randint(100,size=(100))
colors = np.random.randint(100,size=(100))
sizes = 10 * np.random.randint(100,size=(100))
plt.scatter (x, y, c=colors, s=sizes, alpha=0.5,cmap='nipy_spectral')
plt.colorbar()
plt.show()
10. 柱状图¶
10.1 柱状图¶
使用 bar() 函数来绘制柱状图
In [217]:
import matplotlib.pyplot as plt
import numpy as np
In [226]:
x = np.array(["A","B","C","D"])
y = np.array([3,8,1,10])
plt. bar(x,y)
plt.show()
bar() 函数采用描述条形布局的参数。 类别及其值由第一个和第二个参数表示为列表。
In [221]:
x = ["APPLES","BANANAS"]
y = [400, 350]
plt.bar(x, y)
Out[221]:
<BarContainer object of 2 artists>
10.2 水平柱状图¶
使用 barh() 函数
In [224]:
x = np.array(["A","B","C","D"])
y = np.array([3,8,1,10])
plt. barh(x,y)
plt.show()
10.3 柱状图颜色¶
bar() 和 barh() 使用 color 参数来设置颜色
和之前所学的颜色一致,支持140种定义过的颜色,或者使用十六进制颜色值,此处不再演示
In [231]:
x = np.array(["A","B","C","D"])
y = np.array([3,8,1,10])
plt. barh(x, y, color = 'r')
plt.show()
10.4 条形宽度¶
bar() 使用 width 参数来设置条形的宽度。
In [239]:
x = np.array(["A","B","C","D"])
y = np.array([3,8,1,10])
plt. bar(x, y, color = 'r', width = 0.1)
plt.show()
10.5 条形高度¶
barh() 使用 height 参数来设置条形的高度
In [243]:
x = np.array(["A","B","C","D"])
y = np.array([3,8,1,10])
plt. barh(x, y, color = 'r', height = 0.1)
plt.show()
11. 直方图¶
在matplotlib中使用 hist() 来创建直方图。
hist()函数将使用一个数字数组来创建直方图,该数组作为参数发送到函数中。
为简单起见,我们使用NumPy随机生成一个包含250个值的数组,其中值将集中在170左右,标准差为10.
In [246]:
import matplotlib.pyplot as plt
import numpy as np
In [248]:
x = np.random.normal(170, 10, 250)
print(x)
"""
这段代码使用了NumPy库中的random.normal函数来生成一个服从正态分布的随机数数组。具体解释如下:
np.random.normal(170, 10, 250):
170:这是正态分布的均值(mean),表示生成的随机数的平均值为170。
10:这是正态分布的标准差(standard deviation),表示生成的随机数的离散程度。标准差越大,生成的随机数越分散;标准差越小,生成的随机数越集中。
250:这是生成的随机数的数量,表示将生成250个随机数。
因此,x = np.random.normal(170, 10, 250) 会生成一个包含250个元素的数组,这些元素服从均值为170、标准差为10的正态分布。
"""
[184.58989378 174.68727308 153.43008996 168.29425859 156.35504971 181.51755538 171.34204933 171.00279021 153.37456335 176.1362794 152.11908309 183.17372246 167.45206112 160.64172288 156.915122 181.10415619 194.54746427 163.76184737 168.73613793 165.73489558 169.92972765 168.57339156 170.92821875 151.76381052 166.93497895 176.09089141 166.22782864 182.80918736 168.56151195 188.72427193 174.49193611 167.06530135 149.61456739 185.45539992 174.52254042 185.18711186 157.8134358 176.56823889 184.44625125 164.76728088 170.39042718 181.42641375 192.53679576 177.00771188 171.05850038 151.47252488 195.72204029 160.15348031 170.47546594 162.19558252 168.32702154 180.18688791 170.91117607 181.75213987 168.64501813 176.41012944 155.99726779 177.76284069 174.03291955 161.65389229 171.18694111 170.90471463 154.70258657 174.67311122 165.79257202 164.47514425 166.85424933 173.22250828 162.57008186 161.9061539 158.25033861 164.92982478 161.4702649 158.70080968 169.67689262 177.93451288 169.04345492 173.57608394 186.4783029 180.05967965 165.01224313 171.02847566 180.78544771 163.65074393 175.61923812 180.55653375 167.54058299 193.3231893 195.40470892 182.64826031 146.24354039 158.53689061 164.78716387 162.44732519 175.97311667 171.92130719 176.5328894 175.56347468 175.55433747 167.67695453 173.35928231 171.56701252 171.97119733 173.42997411 172.97013652 168.56477606 173.51405316 189.8422579 169.49230656 174.93407201 156.12280877 183.02738783 170.94748505 157.62020859 163.66493348 168.50972374 149.69601215 173.83911127 166.6074448 151.82306778 175.98176407 176.87554438 181.68687794 168.24068842 180.84461818 172.80775866 173.3765549 180.2141918 147.40467199 171.32674462 159.29863844 188.0043721 179.98432871 165.50983736 166.20402986 172.16690518 166.07899456 185.1893368 181.74885529 159.84157534 160.09038701 178.22238548 168.66922165 150.96453457 200.14203077 181.63849308 161.48445035 163.19723745 159.16465807 167.03062792 186.28344003 160.98807886 181.94255926 173.29154219 179.45610605 174.59101421 189.46922864 176.49449125 157.84028264 181.53233825 171.20600372 174.95892357 164.7738539 169.66037362 173.9458026 158.58283674 151.19843906 168.4440565 163.09628572 179.96592286 171.84600759 156.44518393 178.54997687 173.94111104 183.98707213 169.43612649 160.54571565 172.56487863 169.83858937 171.42132576 164.76737502 183.77106984 168.35706698 177.34564269 159.36932448 171.60223199 174.72055842 185.34289799 164.90579196 162.00729486 168.63677896 160.02634387 168.11638629 159.19663228 169.1922435 167.92835589 169.21612208 179.98205226 162.70868619 195.14817343 163.10946061 173.5601276 177.71795781 174.71926757 172.65596066 174.86415966 181.43698862 176.3341745 170.67721102 172.88725573 140.84128 176.85407043 176.87087289 173.84857776 154.7476826 166.8758635 172.25644946 196.1848097 162.87225298 166.78306887 164.5491535 175.16651885 155.97558391 168.33181647 175.78182141 187.61387126 177.36306238 166.62405609 180.1676093 163.52765528 165.19813844 169.83433825 165.076798 159.13672236 174.46533592 163.72063454 147.15262558 173.94549703 165.83783859 172.32966762 184.18530882 166.50273488 167.22817925 158.2444955 168.05731582 162.52390526 172.2103488 163.30785826 171.10916813 168.64960843]
In [250]:
plt.hist(x)
plt.show()
12. 饼图¶
12.1 绘制饼图¶
可以使用 ple() 函数来绘制饼图
In [4]:
import matplotlib.pyplot as plt
import numpy as np
In [266]:
y = np.array([35,25,25,15]) # 相加为 100 会绘制为一个饼图
plt.pie(y)
plt. show()
12.2 标签¶
label参数为饼状图添加标签
label参数必须是一个数组,每个楔形都有一个标签:
In [268]:
y = np.array([35,25,25,15])
mylabels = ["Apples", "Bananas", "Cherries","Dates"]
plt.pie(y,labels = mylabels)
plt.show()
12.3 起始角度¶
默认起始角度为x右半轴,可以通过指定startangle参数来更改起始角度
statangle 参数定义为以度为单位的角度,默认值为0
In [273]:
y = np.array([35,25,25,15])
mylabels = ["Apples", "Bananas", "Cherries","Dates"]
plt.pie(y,labels = mylabels, startangle = 90)
plt.show()
12.4 explode¶
也许你想让其中一个楔子脱颖而出?explode参数允许您这样做。
如果指定了explode参数,而不是None,则必须是一个数组,每个楔形都有一个值。
每个值表示每个楔形显示的距离中心多远:
In [283]:
y = np.array([35,25,25,15])
mylabels = ["Apples", "Bananas", "Cherries","Dates"]
myexplodes = [0.2, 0, 0, 0]
plt.pie(y,labels = mylabels, explode = myexplodes)
plt.show()
12.5 阴影¶
通过shadows 参数设置为True,为饼状图添加阴影。
In [6]:
y = np.array([35,25,25,15])
mylabels = ["Apples", "Bananas", "Cherries","Dates"]
myexplodes = [0.2, 0, 0, 0]
plt.pie(y,labels = mylabels, explode = myexplodes, shadow = True)
plt.show()
12.6 颜色¶
使用colors参数为每个楔形的颜色
如果指定了颜色参数,则必须是一个数组,每个楔形都有一个值。
In [11]:
y = np.array([35,25,25,15])
mylabels = ["Apples", "Bananas", "Cherries","Dates"]
myexplodes = [0.2, 0, 0, 0]
mycolors = ["black", "hotpink", "b", "#4CAF50"]
plt.pie(y,labels = mylabels, explode = myexplodes, shadow = True,colors = mycolors)
plt.show()
12.7 图例¶
要为每个楔形添加解释列表,请使用legend()函数
In [19]:
y = np.array([35,25,25,15])
mylabels = ["Apples", "Bananas", "Cherries","Dates"]
plt.pie(y,labels = mylabels)
plt.legend()
plt.show()
12.7.1 带标题的图例¶
要向图例添加标题,请将标题添加到图例函数。
In [22]:
y = np.array([35,25,25,15])
mylabels = ["Apples", "Bananas", "Cherries","Dates"]
plt.pie(y,labels = mylabels)
plt.legend(title = "Four Fruits")
plt.show()