首页 / 资讯中心 / 文章详情

PyCharm+matplotlib 数据可视化实战:从环境搭建到完整出图

PyCharm+matplotlib 数据可视化实战:从环境搭建到完整出图 ★ FEATURED ARTICLE
1. 项目概述与核心需求拆解1.1 数据可视化在开发流程中的定位很多刚接触 Python 数据分析的人把大量精力花在背 pandas 的 API、记 numpy 的矩阵运算上却忽略了最后那一步把结论变成一张让人一眼就能看懂的图。这其实是一件挺可惜的事因为数据可视化从来不是锦上添花的装饰环节而是整个数据分析链路里最重要的一环。你在 PyCharm 里跑通了数据清洗、聚合统计如果最后输出的结果只是一堆打印在控制台里的数字那这批分析的价值就打了折扣。能不能用图形把规律讲清楚往往决定了你的分析成果能不能被别人采用。我最初在 PyCharm 里做图形绘制时也走过一段弯路。总以为绘图就是调用几个函数、弹出一个窗口完事结果真上手做才发现光是怎么把多张图拼在一起怎么让中文标题不乱码怎么让坐标轴不要挡住数据点这些问题就能耗掉大半天。但当我把这一整套流程理顺之后绘图就变成了一件非常有成就感的事——数据一跑完图形一出来规律立刻摆在眼前比干巴巴地看表格高效太多。这篇内容适合三类读者第一类是正在学 Python 数据分析、想在 PyCharm 里把 matplotlib 用熟的新手第二类是已经会用 pandas 做处理但一直没系统整理过绘图代码的开发者第三类是工作中需要定期做报表、画趋势图想提升图表质量的职场人。我会从环境搭建讲到实际案例再把我踩过的坑原原本本列出来尽量让这篇文章能直接作为一份照着做就能出图的手册。1.2 PyCharm 相比其他绘图环境的优势有人会问为什么偏偏选 PyCharm用 Jupyter Notebook 画图不是更流行吗这个问题我在项目里被同事问过很多次。说实话Jupyter 在交互式探索方面确实有它的优势每一格代码运行完图形直接显示在代码下方非常直观。但一旦进入工程化开发阶段情况就不同了。PyCharm 的工程结构管理、代码调试、版本控制集成都是 Notebook 比不了的。你在 PyCharm 里写的绘图脚本可以直接被其他业务模块 import 调用可以纳入统一的日志和异常处理机制甚至可以打包成定时任务去跑。PyCharm 的 SciView 工具窗口对图形展示也很友好。你调用 plt.show() 之后图会显示在独立的 SciView 面板里支持缩放、平移、保存还能同时查看多张图。更实用的一点是PyCharm 里每张图的数据对象仍然存在于内存中你可以继续在同一段代码里对 figure 对象做修改、追加数据、重新渲染调试图形的效率比改一次代码重跑一次高很多。对于需要长期维护的数据项目来说这种开发体验是 Notebook 模式给不了的。另外说明一下我常用的组合pandas 负责数据加载和清洗numpy 负责数值计算matplotlib 负责基础图形seaborn 负责在 matplotlib 之上做高级统计图表。这套组合在 PyCharm 里配置好之后几乎可以覆盖日常工作中九成以上的可视化需求。2. 环境准备PyCharm 中的绘图工具链搭建2.1 Python 解释器与项目环境的配置要点很多人的绘图环境出问题根源不在代码而在 PyCharm 的解释器配置。我见过不少同学明明在终端里已经用 pip 装好了 matplotlib打开 PyCharm 一运行却报 ModuleNotFoundError就是因为他给当前项目配置的解释器和终端里用的是同一条路径但 PyCharm 里创建的是虚拟环境依赖库并没有被安装进这个虚拟环境里。这里给你一个标准操作路径打开 PyCharm进入 File - Settings - Project - Python Interpreter点击右侧的齿轮图标选择 Add Interpreter。如果项目是新开的建议选 Virtualenv Environment勾选 New environmentBase interpreter 选你系统里的 Python 3.9 或更高版本。这样 PyCharm 会为当前项目创建一个独立的虚拟环境后续所有依赖库都装在这个环境里不会和系统环境互相污染。虚拟环境创建好之后安装库有两类方式。第一类是直接在 PyCharm 的 Python Interpreter 设置页里点加号搜索包名去装第二类是在下方 Terminal 终端里执行 pip install。我个人推荐第二类因为可以一次性安装多个库还能用国内镜像加速。比如我常用的安装命令是pip install matplotlib numpy pandas seaborn -i https://pypi.tuna.tsinghua.edu.cn/simple把镜像源换成国内地址之后下载速度能提升好几倍尤其是 matplotlib 这种带大量依赖的库从国外源装经常要等半天。安装完成后在 PyCharm 的终端里再执行一句python -c import matplotlib; print(matplotlib.__version__)能正常输出版本号就说明环境已经通了。2.2 绘图核心库的安装与验证环境通了之后我建议你先把绘图相关的库一次装齐。除了 matplotlib 这个绝对核心之外numpy 和 pandas 是数据准备阶段离不开的seaborn 则可以让你少写很多代码、直接生成带统计意义的图。装完之后做一个快速验证写一个最简单的绘图脚本确认 PyCharm 能把图形窗口弹出来。import matplotlib.pyplot as plt x [1, 2, 3, 4, 5] y [2, 4, 1, 8, 7] plt.plot(x, y) plt.title(Quick Test) plt.show()如果你在 PyCharm 的 SciView 面板里能看到一条折线说明从环境到绘图链路已经全部打通。这一步虽然简单但它帮你把库有没有装对解释器有没有选对图形显示方式有没有配置对这三个最常见的问题一次性排除了。之后再进入正式的绘图环节你心里就有底气了。另一个值得留意的配置点如果你的 PyCharm 版本较新在 Settings - Tools - Python Scientific 里有一个 Show plots in tool window 选项默认是勾选的。这个选项决定了图形是显示在 SciView 面板里还是弹出独立的 matplotlib 窗口。两种模式各有各的用途SciView 面板适合调试阶段反复查看独立窗口适合最终成图时做精细观察。我在实际项目中通常保持勾选状态让图都在 SciView 里显示这样不会弹出多余窗口界面上干净很多。3. 图形绘制的基础原理与代码模板3.1 matplotlib 的绘图三层结构把 matplotlib 用熟关键不在于多背图形函数的参数而在于理解它的三层结构。第一层是 Figure也就是整张画布你可以把它理解成一张白纸所有图形元素都画在这张纸上。第二层是 Axes也就是画布里的一个绘图区域可以有一张或者多张每张 Axes 有自己的坐标系。第三层才是你眼睛里直接看到的那些元素折线、柱体、散点、坐标轴刻度、图例、标题这些都挂在某一个 Axes 下面。这个三层结构决定了你写代码的方式。比如你想在一张画布里放两张上下排列的图那就不是画完一张再画一张而是在 Figure 上建立两个 Axes然后分别往两个 Axes 里填充数据。我用一个生活化的类比来解释Figure 是一栋房子的户型图Axes 是里面的一个个房间标题、坐标轴、图例则是每个房间里的家具。你随意往整个户型图里放家具是没有意义的必须先确定它属于哪个房间。在实际编码中pyplot 模块提供了一组非常人性化的接口默认情况下你不需要手动创建 Figure 和 Axes直接调用 plt.plot() 时matplotlib 会自动帮你创建一个 Figure 和一个 Axes。这种自动创建机制对画单张图很方便但一旦涉及多子图布局我建议你显式地使用fig, axes plt.subplots(nrows, ncols, figsize(width, height))这种写法。这样做的好处是你对画布结构有完全的控制权后续要在某个特定的子图里加标注、调坐标轴范围都能精确操作不会出现改一张图结果另一张图也跟着变的问题。3.2 最常用的三类图形模板实际工作中最常用的图形类型我总结下来就是折线图、柱状图和散点图。折线图适合展示趋势柱状图适合做类别对比散点图适合看两个变量之间的关系。下面给出三套可以直接套用的基础模板你在 PyCharm 里新建一个 Python 文件把代码贴进去就能跑通。折线图的核心是 plt.plot() 函数。注意 x 和 y 的数据长度必须一致否则会报 ValueError。很多人第一次画图就栽在这个错误上。另外如果你的数据是 pandas 的 DataFrame可以直接传列名进去matplotlib 会自动取索引作为 x 轴数据。import matplotlib.pyplot as plt months [1月, 2月, 3月, 4月, 5月, 6月] sales [120, 135, 128, 150, 168, 175] plt.plot(months, sales, markero, color#2E86AB, linewidth2, markersize6) plt.title(上半年销售额趋势) plt.xlabel(月份) plt.ylabel(销售额万元) plt.grid(True, linestyle--, alpha0.6) plt.show()柱状图用 plt.bar()关键参数是 width 控制柱宽、color 控制柱体颜色。如果需要做并列对比可以在同一个 Axes 上连续调用两次 bar()并通过让 x 坐标各偏移一半柱宽的方式把两组柱子并排显示。散点图则用 plt.scatter()它和 plot() 最大的区别是散点图不会连接相邻点适合观察点的分布形态。 scatter 的 s 参数控制点的大小c 参数控制颜色alpha 参数控制透明度。数据点特别多的时候把 alpha 调到 0.5 以下可以避免不同区域的点互相遮盖分布密度一眼就能看出来。import matplotlib.pyplot as plt math_scores [62, 75, 80, 88, 91, 95] study_hours [1.5, 2.0, 2.5, 3.0, 3.5, 4.0] plt.scatter(study_hours, math_scores, s60, c#F39C12, alpha0.8) plt.title(学习时长与数学成绩的关系) plt.xlabel(每日学习时长小时) plt.ylabel(数学成绩) plt.grid(True, linestyle--, alpha0.4) plt.show()这三类图形模板覆盖了我在日常项目中大约八成的绘图需求。剩下的两成比如箱线图、热力图、直方图本质上也是在同一个 Axes 上绘图只是换了一个更语义化的接口比如 boxplot、imshow、hist。理解了三层结构遇到没见过的图形类型你也能很快通过查文档上手。4. 完整实操一个从数据到成图的案例4.1 数据集准备与探索为了把整个流程串起来我在这里设计一个完整的模拟项目某电商平台想分析上半年六个区域门店的销售表现数据包含每个区域的月度销售额、客流量和退货率。你需要从最原始的数据开始在 PyCharm 里完成加载、清洗、绘图最后产出一份图文并茂的分析脚本。模拟数据本身不需要太大我用 numpy 生成一份结构清晰的数据集包含区域名、月份、销售额、客流量、退货率五个字段。你完全可以把这份代码当成数据准备的模板后续换成自己的真实数据逻辑是一样的。import pandas as pd import numpy as np regions [华东, 华北, 华南, 西南, 东北, 华中] months [f{m}月 for m in range(1, 7)] data [] rng np.random.default_rng(42) for region in regions: for month in months: sales float(rng.integers(80, 200)) traffic float(rng.integers(300, 800)) return_rate float(rng.uniform(0.02, 0.08)) data.append([region, month, sales, traffic, return_rate]) df pd.DataFrame(data, columns[区域, 月份, 销售额, 客流量, 退货率]) print(df.head())数据加载进来之后第一步永远是探索性检查。我们看它的形状、列类型、缺失情况。在 PyCharm 里我习惯把 df.info()、df.describe()、df.isnull().sum() 这三句一起跑掉确认数据的基本形态。这一步看似不起眼却能在你动手画图之前就把脏数据的问题挡在门外避免出现图上突然冒出一个异常高值、让你怀疑代码写错了的尴尬情况。4.2 折线图绘制全流程这份数据集里我们最想回答的第一个问题是门店总体销售额在半年内呈现出什么趋势由于数据是按区域和月份两个维度记录的画总趋势之前先做一次聚合把所有区域的月度销售额累加起来。pandas 的 groupby 在这里派上用场一行代码就能得到每个月的销售总额序列。monthly_total df.groupby(月份)[销售额].sum() print(monthly_total)得到月度汇总数据之后画图就简单了。直接用 matplotlib 绘制折线图同时加上数据点标记让每个月的具体值都能看清楚。为了让图形更适合直接放进项目文档里我在同一段代码里把 dpi、图形尺寸、坐标轴范围和网格线都做了配置。import matplotlib.pyplot as plt plt.figure(figsize(10, 5), dpi120) plt.plot(monthly_total.index, monthly_total.values, markero, linestyle-, color#2E86AB, linewidth2.5, markersize8) plt.title(上半年各区域销售总额趋势, fontsize14) plt.xlabel(月份, fontsize12) plt.ylabel(销售总额万元, fontsize12) plt.ylim(0, monthly_total.max() * 1.2) plt.grid(True, linestyle--, alpha0.5) for i, v in enumerate(monthly_total.values): plt.text(i, v 10, str(v), hacenter, vabottom, fontsize10) plt.tight_layout() plt.show()这段代码里有两个细节值得单独说明。第一个是 plt.text() 循环它会在每个数据点上方标出具体数值这样看图的人不用去对照坐标轴一眼就能读出每个月的确切销售额。第二个是 tight_layout()它的作用是把图形元素自动排列紧凑避免标题和坐标轴标签被裁切。每张图我都建议在 show 之前调用它一次尤其是画多子图的时候能省去很多手动调整的麻烦。跑完这段代码你在 PyCharm 的 SciView 里就能看到一条稳步向上的折线。这就是可视化带来的直观反馈如果只是在控制台 print 出一组数字你很难在几秒内感知到销售额的月度变化但图形一出来整体趋势在增长这个判断就变得非常清晰了。4.3 柱状图与散点图实战第二个问题是各区域之间的销售额差距到底有多大这时候上一节的折线图就不太合适了因为折线图强调的是趋势而这里关注的是六个区域在半年内的总量对比。先把数据做一次区域维度聚合再用柱状图呈现。region_total df.groupby(区域)[销售额].sum().sort_values() plt.figure(figsize(10, 5), dpi120) plt.barh(region_total.index, region_total.values, color#F39C12) plt.title(各区域上半年销售总额对比, fontsize14) plt.xlabel(销售总额万元, fontsize12) plt.ylabel(区域, fontsize12) plt.grid(True, axisx, linestyle--, alpha0.5) plt.show()这里我特意用了 barh 而不是 bar也就是横向的柱状图。原因是区域名是中文六个分类名字如果横排放在 x 轴下方标签会非常拥挤字与字互相挤压影响可读性。换成横向柱状图之后区域名的阅读顺序是从上到下字数再多也不会重叠。你以后画分类对比图的时候如果分类名字比较长优先考虑 barh。此外我在聚合之后调用了 sort_values()让柱子按照销售额从低到高排列。这个排序操作能让图形的信息量立刻提升——不用仔细看数据你就能从柱子的长度直接读出哪个区域最强、哪个区域最弱。第三个问题客流量和销售额之间是否相关这类关系型问题用散点图来回答最直观。把每个样本的客流量作为 x 值、销售额作为 y 值画出来如果点的分布呈现出从左下到右上的趋势就说明两者正相关。plt.figure(figsize(8, 6), dpi120) plt.scatter(df[客流量], df[销售额], s50, cdf[退货率], cmapviridis, alpha0.8) plt.colorbar(label退货率) plt.title(客流量与销售额关系点颜色退货率, fontsize13) plt.xlabel(客流量人次/月, fontsize12) plt.ylabel(销售额万元, fontsize12) plt.grid(True, linestyle--, alpha0.4) plt.show()这里我加了一个提升图表表达力的技巧让散点的颜色映射到第三个变量——退货率。c 参数接收一列数值cmap 指定颜色映射方案viridis 是 matplotlib 内置的一种色带从紫色渐变到黄色色盲人群也能分辨。再加上 colorbar 生成色标一张平面散点图就变成了一张能同时表达三个变量的信息图。理解起来并不难位置表达客流量与销售额的关系颜色深浅表达退货率的高低。这种一图多变量的做法在向非技术背景的同事汇报时特别有用。4.4 大图布局与综合美化上面三张图各自独立但实际项目里往往需要把多个维度的分析放在同一张大图里对比查看比如一张数据看板里面同时放销售趋势、区域排名和客流关系。这时候就要用到 subplots 多子图布局了。我用下面的代码把前面三张图整合进一张 2x2 的画布其中左上角画区域销售趋势右上角画月度总趋势下方画柱状图和散点图。fig, axes plt.subplots(2, 2, figsize(14, 10), dpi120) # 左上月度总趋势 axes[0, 0].plot(monthly_total.index, monthly_total.values, markero, color#2E86AB) axes[0, 0].set_title(月度销售总趋势) axes[0, 0].grid(True, linestyle--, alpha0.4) # 右上区域销售额横向柱状图 axes[0, 1].barh(region_total.index, region_total.values, color#F39C12) axes[0, 1].set_title(区域销售额对比) axes[0, 1].grid(True, axisx, linestyle--, alpha0.4) # 左下客流量与销售额散点图 axes[1, 0].scatter(df[客流量], df[销售额], s40, cdf[退货率], cmapviridis, alpha0.7) axes[1, 0].set_title(客流量与销售额关系) axes[1, 0].grid(True, linestyle--, alpha0.4) # 右下区域平均退货率比较 avg_return df.groupby(区域)[退货率].mean().sort_values() axes[1, 1].bar(avg_return.index, avg_return.values, color#888888) axes[1, 1].set_title(区域平均退货率) axes[1, 1].tick_params(axisx, rotation45) fig.suptitle(电商平台销售数据分析看板, fontsize16) plt.tight_layout(rect[0, 0, 1, 0.95]) plt.show()这段代码里最关键的一个细节是下标索引方式。二维 subplots 返回的 axes 是一个二维数组你要用 axes[行索引, 列索引] 的方式访问每个子图而不是以为可以直接拿一个一维数组从头取到尾。刚开始接触 subplots 的人很容易在这里搞混写着写着才发现我改的是第几个子图。另外我在右下角额外画了一张区域平均退货率柱状图用灰色调和其他带颜色的图区分开来避免四张图配色太花导致视觉混乱。整个看板的标题用 suptitle 统一添加而每个子图内部的标题用 set_title。外层标题字号通常比内层稍大一点这样才能形成清晰的层级关系。tight_layout 在子图较多的情况下尤其重要它能自动规避子图之间互相重叠、标题被裁切的问题。从这个案例你可以看出来绘图从来不是单独的一行 plt.plot() 就能搞定的事。数据准备阶段的聚合、清洗选图阶段对图形类型的选择还有最终成图阶段的布局与配色每一个环节都需要你投入思考。完整走完这一套流程你才算是真正把 PyCharm 环境下的数据可视化用熟练了。5. 常见问题与排查技巧实录5.1 中文标签乱码中文字体乱码是 PyCharm 里画图遇到频率最高的问题。辛辛苦苦写好了图表结果 title 和坐标轴标签全部显示成一个个方框非常让人崩溃。乱码的根源在于matplotlib 的默认字体配置里不包含中文字符所以它只能画出一个占位方块。解决办法是显式地把字体指定成你操作系统里存在的中文字体我一般写plt.rcParams[font.sans-serif] [Microsoft YaHei] plt.rcParams[axes.unicode_minus] False第一行指定无衬线字体为微软雅黑第二行解决坐标轴负号显示异常的问题。这里必须说明负号单独设一行是因为 matplotlib 在某些字体配置下即使中文正常了负号也会渲染成方块。字符串 -5 里的那个减号和数学负号在字体渲染时不是同一个东西关掉 unicode_minus 后所有负号统一按照 ASCII 减号绘制就不会出问题了。Windows 系统上微软雅黑、宋体、黑体都是可用的候选字体你可以逐个试选一个你团队里其他人机器上也有的字体保证换一台电脑跑代码不会出现字体缺失。如果你在 Linux 服务器上跑项目系统里往往没有微软雅黑需要考虑安装中文字体或者改用文泉驿、思源黑体等开源字体。这里有个判断技巧先执行fc-list :langzh查看系统里有哪些中文字体再回来配置 rcParams。5.2 图表尺寸与模糊问题我总是强调图画得好不好第一印象在于清楚不清楚。一个非常普遍的坑是用默认 figsize 画完图直接把 plt.savefig() 保存成图片然后放进项目文档里结果图片边缘的文字模糊成一团。原因很简单你没有设置 dpi。屏幕显示的时候 100 dpi 看上去还不错但打印到纸上或者放进 PPT 里放大到全屏像素密度根本不够。保存图片时使用高 dpi 是最直接的解法plt.savefig(sales_dashboard.png, dpi300, bbox_inchestight, facecolorwhite)注意 dpi300 并非越高越好300 对绝大多数屏幕展示和打印场景已经绰绰有余调成 600 会让文件体积明显变大收益却不明显。bbox_inchestight 的作用和之前的 tight_layout() 类似它会自动裁剪图片周围的空白边距保证图片内容紧凑。facecolorwhite 则是把图片背景强制设为白色避免透明背景在其他软件里显示成灰黑棋盘格。尺寸设置也同样有讲究。如果你发现图例和标题挤在了一起或者横坐标标签折叠了四层大概率是 figsize 设得太小了。我在成熟的脚本里通常建一个全局配置区域集中管理所有图形的尺寸和样式plt.rcParams[figure.figsize] (10, 5) plt.rcParams[figure.dpi] 100 plt.rcParams[savefig.dpi] 300 plt.rcParams[font.size] 10 plt.rcParams[axes.titlesize] 13 plt.rcParams[axes.labelsize] 12 plt.rcParams[legend.fontsize] 10这样设置的好处是代码里的每一张图都自动遵循统一风格不用每张图都重复填一堆参数。团队协作时大家统一这套配置产出的图表风格也能保持高度一致。5.3 性能与大数据的绘图体验第三个常见问题是数据量比较大的时候直接画图会卡顿甚至让 PyCharm 直接无响应。我遇到过一次画二十万条时间序列折线的情况默认的 plot() 跑了几十秒才出图而且图一出来密密麻麻全是线根本看不出趋势。这里有两个非常实用的优化手段。第一个手段是两个维度同时降。数据维度上做抽样比如只保留每第 5 个点图形维度上用无锯齿绘图方式比如折线图把 marker 去掉因为点上万的时候加不加 marker 完全没区别反而白白增加渲染负担。第二个手段是改用更高效的可视化后端。matplotlib 默认支持的后端中Agg 模式不会弹窗显示只负责把图形渲染成文件适合大批量离线出图。PyCharm 的 SciView 调试模式下显示图方便但批量处理时我一般直接调 Agg 并 savefig速度能快很多。import matplotlib matplotlib.use(Agg) import matplotlib.pyplot as plt # 大批量出图流程 for region in regions: subset df[df[区域] region] plt.figure(figsize(8, 4)) plt.plot(subset[月份], subset[销售额], markero) plt.title(f{region}门店销售趋势) plt.savefig(fsales_{region}.png, dpi200) plt.close()这段代码里还藏着一个好习惯每画完一张图就调用 plt.close()。如果你在一个循环里反复创建新图不关闭旧图的话所有 Figure 对象都会驻留在内存里循环几百次之后内存占用会一路飙升。我之前就因为这个疏忽在跑批量报表时把机器内存吃满了进程被系统直接杀掉。从那以后凡是批量绘图我一定在每次 savefig 之后立刻 close。除了 matplotlib 自身seaborn 的高层接口在很多场景下能让代码更短同时图表自带统计结果比如回归拟合线、置信区间这些。不过 seaborn 底层仍然是 matplotlib遇到性能问题的时候排查思路是一样的先定位是数据量的问题还是绘图元素数量的问题再对症下药。6. 我的个人经验补充最后分享一点我自己的习惯。我在 PyCharm 里做可视化项目时不会一来就写画图代码而是先建一个统一的图表配置函数。这个函数负责设置全局的字体、尺寸、颜色方案然后把每个图表的绘图逻辑拆成独立函数。项目越到后期这种工程化组织方式的价值越明显——数据源变了改数据加载函数配色风格变了改配置函数要增加一张新图加一个独立函数。整个项目始终是清晰的、可维护的而不是一个从上到下几百行的脚本。另一个经验是关于先想清楚再动手。很多人在画图前没有想明白这张图要回答什么问题结果画出来之后发现选错图形类型又回头改。我个人习惯是先写下一句话这张图要说明什么结论。然后根据这个结论去选图。比如结论是销售额随时间增长选折线图结论是华东地区销售额最高选柱状图结论是客流量越大销售额越大选散点图。一旦结论想清楚图形类型基本上是对号入座的事不用反复试错。还有一个小技巧关于图表的配色。matplotlib 默认的配色虽然能用但在正式报告里往往不够精致。我常用的做法是直接用内置的 Tableau 色系或者 seaborn 的 deep 色系避免使用默认的蓝色橙色组合。如果你想快速做出有设计感的图记住一个原则同一个图里主色不超过三种用灰度做辅助信息层。这一条原则就能让你的图表在观感上超过大多数随手画的作品。最后再絮叨一句数据可视化是一个熟能生巧的技能光看文章不动手永远只能停留在复制代码的阶段。建议你把我上面给的模拟数据集跑一遍然后自己换一组数据、换一批问题试着把整个流程重新走一遍。第一次跑通可能需要一点时间但等你把思路理清了以后任何数据摆在你面前你都会自然而然地知道该画什么图、怎么画、怎么调整细节。到那时候PyCharm 里的图形绘制对你来说就不再是一件费劲的事而是一种特别顺手、特别有成就感的表达方式了。
阅读完成 · 觉得有帮助?
咨询建站