<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Python on 小优</title><link>http://www.huayouinfo.com/tags/python/</link><description>Recent content in Python on 小优</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 08 Apr 2026 01:00:00 +0800</lastBuildDate><atom:link href="http://www.huayouinfo.com/tags/python/index.xml" rel="self" type="application/rss+xml"/><item><title>Python数据可视化实战教程</title><link>http://www.huayouinfo.com/posts/python%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96%E6%95%99%E7%A8%8B/</link><pubDate>Wed, 08 Apr 2026 01:00:00 +0800</pubDate><guid>http://www.huayouinfo.com/posts/python%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96%E6%95%99%E7%A8%8B/</guid><description>用Python进行数据分析和可视化是数据科学的核心技能。这篇教程从基础图表到高级可视化，手把手教你做出专业的图表。</description><content:encoded><![CDATA[<h2 id="背景问题">背景/问题</h2>
<p>你是否遇到这样的情况：辛辛苦苦分析的数据，用Excel做的图表太丑拿不出手？看到别人做的数据可视化很酷炫，自己却不知道怎么实现？想要做数据分析但不知道从哪里开始？</p>
<p>Python的数据可视化生态非常强大，从简单的折线图到复杂的交互式图表都能轻松实现。这篇教程将带你快速掌握Python数据可视化的核心技能。</p>
<h2 id="环境信息">环境信息</h2>
<ul>
<li><strong>操作系统</strong>：Windows/Mac/Linux</li>
<li><strong>Python版本</strong>：Python 3.8+</li>
<li><strong>相关依赖</strong>：
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>pip install pandas matplotlib seaborn numpy
</span></span></code></pre></div></li>
</ul>
<h2 id="一数据准备">一、数据准备</h2>
<h3 id="11-导入库">1.1 导入库</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> pandas <span style="color:#66d9ef">as</span> pd
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> matplotlib.pyplot <span style="color:#66d9ef">as</span> plt
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> seaborn <span style="color:#66d9ef">as</span> sns
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> numpy <span style="color:#66d9ef">as</span> np
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 设置中文字体</span>
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>rcParams[<span style="color:#e6db74">&#39;font.sans-serif&#39;</span>] <span style="color:#f92672">=</span> [<span style="color:#e6db74">&#39;SimHei&#39;</span>, <span style="color:#e6db74">&#39;Arial&#39;</span>]
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>rcParams[<span style="color:#e6db74">&#39;axes.unicode_minus&#39;</span>] <span style="color:#f92672">=</span> <span style="color:#66d9ef">False</span>
</span></span></code></pre></div><h3 id="12-创建示例数据">1.2 创建示例数据</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 创建销售数据</span>
</span></span><span style="display:flex;"><span>data <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#39;月份&#39;</span>: [<span style="color:#e6db74">&#39;1月&#39;</span>, <span style="color:#e6db74">&#39;2月&#39;</span>, <span style="color:#e6db74">&#39;3月&#39;</span>, <span style="color:#e6db74">&#39;4月&#39;</span>, <span style="color:#e6db74">&#39;5月&#39;</span>, <span style="color:#e6db74">&#39;6月&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#39;销售额&#39;</span>: [<span style="color:#ae81ff">12000</span>, <span style="color:#ae81ff">15000</span>, <span style="color:#ae81ff">18000</span>, <span style="color:#ae81ff">16000</span>, <span style="color:#ae81ff">21000</span>, <span style="color:#ae81ff">25000</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#39;成本&#39;</span>: [<span style="color:#ae81ff">8000</span>, <span style="color:#ae81ff">9500</span>, <span style="color:#ae81ff">11000</span>, <span style="color:#ae81ff">10000</span>, <span style="color:#ae81ff">13000</span>, <span style="color:#ae81ff">15000</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#39;利润率&#39;</span>: [<span style="color:#ae81ff">33</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">39</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">40</span>]
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>df <span style="color:#f92672">=</span> pd<span style="color:#f92672">.</span>DataFrame(data)
</span></span></code></pre></div><h2 id="二基础图表">二、基础图表</h2>
<h3 id="21-折线图">2.1 折线图</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 简单折线图</span>
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>figure(figsize<span style="color:#f92672">=</span>(<span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">6</span>))
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>plot(df[<span style="color:#e6db74">&#39;月份&#39;</span>], df[<span style="color:#e6db74">&#39;销售额&#39;</span>], marker<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;o&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>title(<span style="color:#e6db74">&#39;月度销售额趋势&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>xlabel(<span style="color:#e6db74">&#39;月份&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>ylabel(<span style="color:#e6db74">&#39;销售额（元）&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>grid(<span style="color:#66d9ef">True</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>savefig(<span style="color:#e6db74">&#39;line_chart.png&#39;</span>, dpi<span style="color:#f92672">=</span><span style="color:#ae81ff">150</span>, bbox_inches<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;tight&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>show()
</span></span></code></pre></div><h3 id="22-柱状图">2.2 柱状图</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 带数值标注的柱状图</span>
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>figure(figsize<span style="color:#f92672">=</span>(<span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">6</span>))
</span></span><span style="display:flex;"><span>bars <span style="color:#f92672">=</span> plt<span style="color:#f92672">.</span>bar(df[<span style="color:#e6db74">&#39;月份&#39;</span>], df[<span style="color:#e6db74">&#39;销售额&#39;</span>], color<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;steelblue&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>title(<span style="color:#e6db74">&#39;月度销售额对比&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>xlabel(<span style="color:#e6db74">&#39;月份&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>ylabel(<span style="color:#e6db74">&#39;销售额（元）&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 添加数值标签</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> bar <span style="color:#f92672">in</span> bars:
</span></span><span style="display:flex;"><span>    height <span style="color:#f92672">=</span> bar<span style="color:#f92672">.</span>get_height()
</span></span><span style="display:flex;"><span>    plt<span style="color:#f92672">.</span>text(bar<span style="color:#f92672">.</span>get_x() <span style="color:#f92672">+</span> bar<span style="color:#f92672">.</span>get_width()<span style="color:#f92672">/</span><span style="color:#ae81ff">2</span>, height <span style="color:#f92672">+</span> <span style="color:#ae81ff">500</span>,
</span></span><span style="display:flex;"><span>             <span style="color:#e6db74">f</span><span style="color:#e6db74">&#39;</span><span style="color:#e6db74">{</span>int(height)<span style="color:#e6db74">}</span><span style="color:#e6db74">&#39;</span>, ha<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;center&#39;</span>, va<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;bottom&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>savefig(<span style="color:#e6db74">&#39;bar_chart.png&#39;</span>, dpi<span style="color:#f92672">=</span><span style="color:#ae81ff">150</span>, bbox_inches<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;tight&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>show()
</span></span></code></pre></div><h3 id="23-饼图">2.3 饼图</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 市场份额饼图</span>
</span></span><span style="display:flex;"><span>market_data <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#39;产品A&#39;</span>: <span style="color:#ae81ff">35</span>, <span style="color:#e6db74">&#39;产品B&#39;</span>: <span style="color:#ae81ff">25</span>, <span style="color:#e6db74">&#39;产品C&#39;</span>: <span style="color:#ae81ff">20</span>, <span style="color:#e6db74">&#39;产品D&#39;</span>: <span style="color:#ae81ff">15</span>, <span style="color:#e6db74">&#39;其他&#39;</span>: <span style="color:#ae81ff">5</span>}
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>figure(figsize<span style="color:#f92672">=</span>(<span style="color:#ae81ff">8</span>, <span style="color:#ae81ff">8</span>))
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>pie(market_data<span style="color:#f92672">.</span>values(), labels<span style="color:#f92672">=</span>market_data<span style="color:#f92672">.</span>keys(), 
</span></span><span style="display:flex;"><span>        autopct<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;</span><span style="color:#e6db74">%1.1f%%</span><span style="color:#e6db74">&#39;</span>, startangle<span style="color:#f92672">=</span><span style="color:#ae81ff">90</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>title(<span style="color:#e6db74">&#39;产品市场份额分布&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>savefig(<span style="color:#e6db74">&#39;pie_chart.png&#39;</span>, dpi<span style="color:#f92672">=</span><span style="color:#ae81ff">150</span>, bbox_inches<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;tight&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>show()
</span></span></code></pre></div><h2 id="三组合图表">三、组合图表</h2>
<h3 id="31-双轴图表">3.1 双轴图表</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 双Y轴图表：销售额和利润率</span>
</span></span><span style="display:flex;"><span>fig, ax1 <span style="color:#f92672">=</span> plt<span style="color:#f92672">.</span>subplots(figsize<span style="color:#f92672">=</span>(<span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">6</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 左Y轴：销售额</span>
</span></span><span style="display:flex;"><span>ax1<span style="color:#f92672">.</span>bar(df[<span style="color:#e6db74">&#39;月份&#39;</span>], df[<span style="color:#e6db74">&#39;销售额&#39;</span>], alpha<span style="color:#f92672">=</span><span style="color:#ae81ff">0.7</span>, color<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;steelblue&#39;</span>, label<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;销售额&#39;</span>)
</span></span><span style="display:flex;"><span>ax1<span style="color:#f92672">.</span>set_xlabel(<span style="color:#e6db74">&#39;月份&#39;</span>)
</span></span><span style="display:flex;"><span>ax1<span style="color:#f92672">.</span>set_ylabel(<span style="color:#e6db74">&#39;销售额（元）&#39;</span>, color<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;steelblue&#39;</span>)
</span></span><span style="display:flex;"><span>ax1<span style="color:#f92672">.</span>tick_params(axis<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;y&#39;</span>, labelcolor<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;steelblue&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 右Y轴：利润率</span>
</span></span><span style="display:flex;"><span>ax2 <span style="color:#f92672">=</span> ax1<span style="color:#f92672">.</span>twinx()
</span></span><span style="display:flex;"><span>ax2<span style="color:#f92672">.</span>plot(df[<span style="color:#e6db74">&#39;月份&#39;</span>], df[<span style="color:#e6db74">&#39;利润率&#39;</span>], marker<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;o&#39;</span>, color<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;orangered&#39;</span>, linewidth<span style="color:#f92672">=</span><span style="color:#ae81ff">2</span>, label<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;利润率&#39;</span>)
</span></span><span style="display:flex;"><span>ax2<span style="color:#f92672">.</span>set_ylabel(<span style="color:#e6db74">&#39;利润率（%）&#39;</span>, color<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;orangered&#39;</span>)
</span></span><span style="display:flex;"><span>ax2<span style="color:#f92672">.</span>tick_params(axis<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;y&#39;</span>, labelcolor<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;orangered&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>title(<span style="color:#e6db74">&#39;月度销售与利润率分析&#39;</span>)
</span></span><span style="display:flex;"><span>fig<span style="color:#f92672">.</span>legend(loc<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;upper right&#39;</span>, bbox_to_anchor<span style="color:#f92672">=</span>(<span style="color:#ae81ff">0.88</span>, <span style="color:#ae81ff">0.88</span>))
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>savefig(<span style="color:#e6db74">&#39;dual_axis.png&#39;</span>, dpi<span style="color:#f92672">=</span><span style="color:#ae81ff">150</span>, bbox_inches<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;tight&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>show()
</span></span></code></pre></div><h3 id="32-子图布局">3.2 子图布局</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 四宫格子图</span>
</span></span><span style="display:flex;"><span>fig, axes <span style="color:#f92672">=</span> plt<span style="color:#f92672">.</span>subplots(<span style="color:#ae81ff">2</span>, <span style="color:#ae81ff">2</span>, figsize<span style="color:#f92672">=</span>(<span style="color:#ae81ff">14</span>, <span style="color:#ae81ff">10</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 图1：销售额趋势</span>
</span></span><span style="display:flex;"><span>axes[<span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>]<span style="color:#f92672">.</span>plot(df[<span style="color:#e6db74">&#39;月份&#39;</span>], df[<span style="color:#e6db74">&#39;销售额&#39;</span>], marker<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;o&#39;</span>, color<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;steelblue&#39;</span>)
</span></span><span style="display:flex;"><span>axes[<span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>]<span style="color:#f92672">.</span>set_title(<span style="color:#e6db74">&#39;销售额趋势&#39;</span>)
</span></span><span style="display:flex;"><span>axes[<span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>]<span style="color:#f92672">.</span>grid(<span style="color:#66d9ef">True</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 图2：成本对比</span>
</span></span><span style="display:flex;"><span>axes[<span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">1</span>]<span style="color:#f92672">.</span>bar(df[<span style="color:#e6db74">&#39;月份&#39;</span>], df[<span style="color:#e6db74">&#39;成本&#39;</span>], color<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;coral&#39;</span>)
</span></span><span style="display:flex;"><span>axes[<span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">1</span>]<span style="color:#f92672">.</span>set_title(<span style="color:#e6db74">&#39;月度成本&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 图3：利润率变化</span>
</span></span><span style="display:flex;"><span>axes[<span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">0</span>]<span style="color:#f92672">.</span>fill_between(df[<span style="color:#e6db74">&#39;月份&#39;</span>], df[<span style="color:#e6db74">&#39;利润率&#39;</span>], alpha<span style="color:#f92672">=</span><span style="color:#ae81ff">0.3</span>, color<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;green&#39;</span>)
</span></span><span style="display:flex;"><span>axes[<span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">0</span>]<span style="color:#f92672">.</span>plot(df[<span style="color:#e6db74">&#39;月份&#39;</span>], df[<span style="color:#e6db74">&#39;利润率&#39;</span>], marker<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;s&#39;</span>, color<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;green&#39;</span>)
</span></span><span style="display:flex;"><span>axes[<span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">0</span>]<span style="color:#f92672">.</span>set_title(<span style="color:#e6db74">&#39;利润率变化&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 图4：销售额占比</span>
</span></span><span style="display:flex;"><span>axes[<span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">1</span>]<span style="color:#f92672">.</span>pie(df[<span style="color:#e6db74">&#39;销售额&#39;</span>], labels<span style="color:#f92672">=</span>df[<span style="color:#e6db74">&#39;月份&#39;</span>], autopct<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;</span><span style="color:#e6db74">%1.1f%%</span><span style="color:#e6db74">&#39;</span>)
</span></span><span style="display:flex;"><span>axes[<span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">1</span>]<span style="color:#f92672">.</span>set_title(<span style="color:#e6db74">&#39;各月销售占比&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>suptitle(<span style="color:#e6db74">&#39;销售数据综合分析&#39;</span>, fontsize<span style="color:#f92672">=</span><span style="color:#ae81ff">16</span>, fontweight<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;bold&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>tight_layout()
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>savefig(<span style="color:#e6db74">&#39;subplots.png&#39;</span>, dpi<span style="color:#f92672">=</span><span style="color:#ae81ff">150</span>, bbox_inches<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;tight&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>show()
</span></span></code></pre></div><h2 id="四seaborn高级可视化">四、Seaborn高级可视化</h2>
<h3 id="41-热力图">4.1 热力图</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 相关性热力图</span>
</span></span><span style="display:flex;"><span>np<span style="color:#f92672">.</span>random<span style="color:#f92672">.</span>seed(<span style="color:#ae81ff">42</span>)
</span></span><span style="display:flex;"><span>data <span style="color:#f92672">=</span> pd<span style="color:#f92672">.</span>DataFrame({
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#39;A&#39;</span>: np<span style="color:#f92672">.</span>random<span style="color:#f92672">.</span>randn(<span style="color:#ae81ff">100</span>),
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#39;B&#39;</span>: np<span style="color:#f92672">.</span>random<span style="color:#f92672">.</span>randn(<span style="color:#ae81ff">100</span>),
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#39;C&#39;</span>: np<span style="color:#f92672">.</span>random<span style="color:#f92672">.</span>randn(<span style="color:#ae81ff">100</span>),
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#39;D&#39;</span>: np<span style="color:#f92672">.</span>random<span style="color:#f92672">.</span>randn(<span style="color:#ae81ff">100</span>),
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#39;E&#39;</span>: np<span style="color:#f92672">.</span>random<span style="color:#f92672">.</span>randn(<span style="color:#ae81ff">100</span>)
</span></span><span style="display:flex;"><span>})
</span></span><span style="display:flex;"><span>corr <span style="color:#f92672">=</span> data<span style="color:#f92672">.</span>corr()
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>figure(figsize<span style="color:#f92672">=</span>(<span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">8</span>))
</span></span><span style="display:flex;"><span>sns<span style="color:#f92672">.</span>heatmap(corr, annot<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>, cmap<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;coolwarm&#39;</span>, center<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>, 
</span></span><span style="display:flex;"><span>            square<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>, linewidths<span style="color:#f92672">=</span><span style="color:#ae81ff">0.5</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>title(<span style="color:#e6db74">&#39;变量相关性热力图&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>savefig(<span style="color:#e6db74">&#39;heatmap.png&#39;</span>, dpi<span style="color:#f92672">=</span><span style="color:#ae81ff">150</span>, bbox_inches<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;tight&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>show()
</span></span></code></pre></div><h3 id="42-分布图">4.2 分布图</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 带分布的散点图</span>
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>figure(figsize<span style="color:#f92672">=</span>(<span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">6</span>))
</span></span><span style="display:flex;"><span>sns<span style="color:#f92672">.</span>scatterplot(x<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;销售额&#39;</span>, y<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;成本&#39;</span>, data<span style="color:#f92672">=</span>df, s<span style="color:#f92672">=</span><span style="color:#ae81ff">100</span>, 
</span></span><span style="display:flex;"><span>                hue<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;月份&#39;</span>, palette<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;Set2&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>title(<span style="color:#e6db74">&#39;销售额与成本关系&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>savefig(<span style="color:#e6db74">&#39;scatter.png&#39;</span>, dpi<span style="color:#f92672">=</span><span style="color:#ae81ff">150</span>, bbox_inches<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;tight&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>show()
</span></span></code></pre></div><h3 id="43-箱线图">4.3 箱线图</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 箱线图展示数据分布</span>
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>figure(figsize<span style="color:#f92672">=</span>(<span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">6</span>))
</span></span><span style="display:flex;"><span>sns<span style="color:#f92672">.</span>boxplot(data<span style="color:#f92672">=</span>df[[<span style="color:#e6db74">&#39;销售额&#39;</span>, <span style="color:#e6db74">&#39;成本&#39;</span>]], palette<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;Set3&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>title(<span style="color:#e6db74">&#39;销售额与成本分布对比&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>savefig(<span style="color:#e6db74">&#39;boxplot.png&#39;</span>, dpi<span style="color:#f92672">=</span><span style="color:#ae81ff">150</span>, bbox_inches<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;tight&#39;</span>)
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>show()
</span></span></code></pre></div><h2 id="五样式和美化">五、样式和美化</h2>
<h3 id="51-主题设置">5.1 主题设置</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 使用Seaborn内置主题</span>
</span></span><span style="display:flex;"><span>sns<span style="color:#f92672">.</span>set_style(<span style="color:#e6db74">&#39;whitegrid&#39;</span>)
</span></span><span style="display:flex;"><span>sns<span style="color:#f92672">.</span>set_palette(<span style="color:#e6db74">&#39;husl&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 或使用Matplotlib样式</span>
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>style<span style="color:#f92672">.</span>use(<span style="color:#e6db74">&#39;seaborn-v0_8-darkgrid&#39;</span>)
</span></span></code></pre></div><h3 id="52-颜色方案">5.2 颜色方案</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 自定义颜色</span>
</span></span><span style="display:flex;"><span>colors <span style="color:#f92672">=</span> [<span style="color:#e6db74">&#39;#FF6B6B&#39;</span>, <span style="color:#e6db74">&#39;#4ECDC4&#39;</span>, <span style="color:#e6db74">&#39;#45B7D1&#39;</span>, <span style="color:#e6db74">&#39;#96CEB4&#39;</span>, <span style="color:#e6db74">&#39;#FFEAA7&#39;</span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 渐变色</span>
</span></span><span style="display:flex;"><span>cmap <span style="color:#f92672">=</span> plt<span style="color:#f92672">.</span>cm<span style="color:#f92672">.</span>RdYlGn
</span></span></code></pre></div><h3 id="53-保存高清图片">5.3 保存高清图片</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># DPI设置</span>
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>savefig(<span style="color:#e6db74">&#39;chart.png&#39;</span>, dpi<span style="color:#f92672">=</span><span style="color:#ae81ff">300</span>, bbox_inches<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;tight&#39;</span>, 
</span></span><span style="display:flex;"><span>            facecolor<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;white&#39;</span>, edgecolor<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;none&#39;</span>)
</span></span></code></pre></div><h2 id="六常见问题踩坑记录">六、常见问题/踩坑记录</h2>
<h3 id="问题-1中文字体显示乱码">问题 1：中文字体显示乱码</h3>
<p><strong>错误信息</strong>：图表中的中文显示为方块</p>
<p><strong>解决方案</strong>：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 方法1：指定中文字体</span>
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>rcParams[<span style="color:#e6db74">&#39;font.sans-serif&#39;</span>] <span style="color:#f92672">=</span> [<span style="color:#e6db74">&#39;SimHei&#39;</span>]
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 方法2：下载并使用支持中文的字体</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 方法3：直接显示英文，添加中文图例</span>
</span></span></code></pre></div><h3 id="问题-2图表中文本显示被遮挡">问题 2：图表中文本显示被遮挡</h3>
<p><strong>原因分析</strong>：文字太密集或位置不当</p>
<p><strong>解决方案</strong>：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>tight_layout()  <span style="color:#75715e"># 自动调整布局</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 或手动调整</span>
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>subplots_adjust(top<span style="color:#f92672">=</span><span style="color:#ae81ff">0.9</span>, bottom<span style="color:#f92672">=</span><span style="color:#ae81ff">0.1</span>)
</span></span></code></pre></div><h3 id="问题-3数据量太大时图表渲染很慢">问题 3：数据量太大时图表渲染很慢</h3>
<p><strong>解决方案</strong>：</p>
<ul>
<li>使用<code>plt.switch_backend('agg')</code>后端</li>
<li>先对数据采样再绘图</li>
<li>使用静态图片格式而非交互式</li>
</ul>
<h2 id="七最佳实践总结">七、最佳实践总结</h2>
<h3 id="常用图表选择指南">常用图表选择指南</h3>
<table>
  <thead>
      <tr>
          <th>数据类型</th>
          <th>推荐图表</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>趋势变化</td>
          <td>折线图</td>
      </tr>
      <tr>
          <td>比较大小</td>
          <td>柱状图</td>
      </tr>
      <tr>
          <td>占比分布</td>
          <td>饼图、环形图</td>
      </tr>
      <tr>
          <td>相关性</td>
          <td>散点图、热力图</td>
      </tr>
      <tr>
          <td>分布情况</td>
          <td>箱线图、直方图</td>
      </tr>
  </tbody>
</table>
<h3 id="图表美化建议">图表美化建议</h3>
<ol>
<li>标题要清晰，不要过度装饰</li>
<li>颜色不要超过5种</li>
<li>坐标轴标签要完整</li>
<li>关键数据可以添加标注</li>
<li>保持风格统一</li>
</ol>
<h3 id="推荐学习资源">推荐学习资源</h3>
<ul>
<li>Matplotlib官方文档：https://matplotlib.org</li>
<li>Seaborn官方文档：https://seaborn.pydata.org</li>
<li>Python Graph Gallery：https://www.python-graph-gallery.com</li>
</ul>
<hr>
<p>掌握Python数据可视化后，你可以：</p>
<ul>
<li>用图表清晰展示数据分析结果</li>
<li>制作专业的报表和仪表盘</li>
<li>用数据讲好故事</li>
<li>自动化日常的数据报告</li>
</ul>
<p>数据可视化是一门需要不断实践的技术，多看多练才能熟练掌握！</p>
]]></content:encoded></item></channel></rss>