2026/2/18 22:11:46
网站建设
项目流程
做网站有哪些类型的,南海做网站公司,鲜花销售网站建设策划表,dw网站建设代码Day 50#xff1a;【99天精通Python】数据可视化 Matplotlib 基础 - 绘图入门
前言
欢迎来到第50天#xff01;
“一图胜千言”。在数据分析中#xff0c;无论你的数据处理得多完美#xff0c;如果不能用直观的图表展示出来#xff0c;老板和客户是看不懂的。
Matplotlib …Day 50【99天精通Python】数据可视化 Matplotlib 基础 - 绘图入门前言欢迎来到第50天“一图胜千言”。在数据分析中无论你的数据处理得多完美如果不能用直观的图表展示出来老板和客户是看不懂的。Matplotlib是 Python 最基础、最强大的绘图库。它是许多高级可视化库如 Seaborn, Pandas Plot的底层。虽然它的默认样式稍微有点理工男审美朴素但只要稍加配置它也能画出出版级的高质量图表。本节内容Matplotlib 画图逻辑 (Figure, Axes)绘制折线图 (Line Plot)绘制散点图 (Scatter Plot)绘制饼图 (Pie Chart)设置标题、标签、图例、网格保存图片一、画图的逻辑画布与坐标系很多初学者容易被plt.plot和ax.plot搞晕。我们先理清概念Figure (画布)整个图片的底板。Axes (坐标系)画布上的一块区域我们在这里画图包含 x轴、y轴、标题等。一张画布可以有多个坐标系子图。importmatplotlib.pyplotaspltimportnumpyasnp# 1. 创建画布 (宽8英寸高6英寸)figplt.figure(figsize(8,6))# 2. 创建坐标系 (111 表示 1行1列的第1个子图)axfig.add_subplot(111)# 3. 画图x[1,2,3,4]y[10,20,15,30]ax.plot(x,y)# 4. 显示plt.show()简便写法如果只有一张图可以直接用plt.plot()它会自动创建 Figure 和 Axes。二、折线图 (Line Plot)折线图最适合展示趋势如股票走势、气温变化。xnp.linspace(0,10,100)ynp.sin(x)plt.figure(figsize(10,5))# plot(x, y, 格式字符串, label...)# r--: 红色(red) 虚线(dashed)plt.plot(x,y,r--,labelSin Wave)# 再画一条 cos 曲线plt.plot(x,np.cos(x),b-,labelCos Wave)# 设置细节plt.title(Sin Cos Function)plt.xlabel(Time (s))plt.ylabel(Value)plt.legend()# 显示图例 (label)plt.grid(True)# 显示网格plt.show()三、散点图 (Scatter Plot)散点图用于观察两个变量之间的关系如身高与体重、房价与面积。# 生成 50 个随机点xnp.random.rand(50)ynp.random.rand(50)colorsnp.random.rand(50)# 随机颜色sizesnp.random.rand(50)*100# 随机大小plt.scatter(x,y,ccolors,ssizes,alpha0.5)# alpha 透明度plt.title(Random Scatter)plt.show()四、饼图 (Pie Chart)饼图用于展示占比。labels[Python,Java,C,Go]sizes[45,30,15,10]explode(0.1,0,0,0)# 突出显示第一块 (Python)plt.pie(sizes,labelslabels,explodeexplode,autopct%1.1f%%,# 显示百分比shadowTrue,startangle90)plt.axis(equal)# 保证饼图是圆的不是扁的plt.title(Programming Language Share)plt.show()五、中文显示问题 (复习)Matplotlib 默认不支持中文需要手动设置字体。# Windowsplt.rcParams[font.sans-serif][SimHei]# Mac# plt.rcParams[font.sans-serif] [Arial Unicode MS]plt.rcParams[axes.unicode_minus]False# 解决负号显示问题plt.plot([1,2,3],[10,20,30])plt.title(中文标题测试)plt.show()六、多子图 (Subplots)在一张画布上画多张图。xnp.linspace(0,10,100)# 创建 2行1列 的布局fig,axesplt.subplots(2,1,figsize(8,8))# 第1张图 (axes[0])axes[0].plot(x,np.sin(x),r)axes[0].set_title(Sin)# 第2张图 (axes[1])axes[1].plot(x,np.cos(x),b)axes[1].set_title(Cos)plt.tight_layout()# 自动调整间距防止重叠plt.show()七、保存图片plt.plot(x,y)# dpi: 分辨率 (dots per inch)越高越清晰plt.savefig(my_plot.png,dpi300)八、实战练习股票走势图模拟一支股票 10 天的收盘价绘制折线图并标出最高点。daysrange(1,11)prices[10,12,11,14,13,16,18,15,19,22]plt.figure(figsize(10,6))plt.plot(days,prices,markero,linestyle-,colorg)# 标注最高点max_pricemax(prices)max_daydays[prices.index(max_price)]# annotate(文本, xy目标点, xytext文字位置, arrowprops箭头样式)plt.annotate(fPeak:{max_price},xy(max_day,max_price),xytext(max_day-2,max_price2),arrowpropsdict(facecolorred,shrink0.05))plt.title(Stock Price Trend)plt.xlabel(Day)plt.ylabel(Price ($))plt.grid(True)plt.show()九、小结Matplotlib 绘图基本流程图表类型美化配置Figure (画布)Axes (坐标系)show() / savefig()plot (折线)scatter (散点)bar (柱状 - 见Day36)pie (饼图)title / xlabel / ylabellegend (图例)grid (网格)中文支持关键要点简单图用plt.xxx复杂多子图用fig, ax plt.subplots()。记住常用的图表类型趋势看折线占比看饼图关系看散点对比看柱状。遇到中文乱码别慌设置font.sans-serif。十、课后作业成绩分布图随机生成 100 个 0-100 的学生成绩绘制直方图 (Histogram)查看分数分布情况提示plt.hist。双轴图在同一张图上左边 Y 轴显示销售额柱状图右边 Y 轴显示增长率折线图。提示ax.twinx()。函数绘制绘制yx2y x^2yx2和yx3y x^3yx3的图像设置不同的颜色和线型并添加图例。下节预告Day 51数据可视化 Seaborn 进阶- Matplotlib 写起来代码太多Seaborn 基于 Matplotlib能用更少的代码画出更漂亮、更统计学专业的图表如热力图、箱线图。系列导航上一篇Day 49 - Pandas进阶下一篇Day 51 - 数据可视化Seaborn进阶待更新