Python绘制散点对比图

本文通过绘制散点图的方式展示了正负两类样本数据的特点,利用Python的matplotlib库实现了数据可视化,有助于直观理解数据分布。
部署运行你感兴趣的模型镜像

    由于在进行数据分析的时候,往往需要可视化的帮助才能 更方便的发现样本数据的特点,今天我们需要展示正负类数据做可视化分析简单测试一下


#!usr/bin/env python
#encoding:utf-8
from __future__ import division

'''
__Author__:沂水寒城
'''


import matplotlib
import matplotlib.pyplot as plt 
import random





def plot_sctter(n=300,savepath='test.png'):
    '''
    绘制样本数据的散点图(对比)
    '''
    x_list=range(n)
    y_list1,y_list2=[],[]
    for i in range(n):
        y_list1.append(random.randint(2000,5000))
    for i in range(n):
        y_list2.append(random.randint(10,1000))
    plt.clf() 
    plt.scatter(x_list,y_list1,color='r',label='One')
    plt.scatter(x_list,y_list2,color='b',label='Two')
    plt.legend(loc='upper right',ncol=1,fancybox=True,shadow=True)
    plt.savefig(savepath)






if __name__ == '__main__':
    plot_sctter(n=300,savepath='test.png')



结果如下;




您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>好的,我现在需要回答用户关于如何用Python绘制曲线的问题,使用matplotlib和seaborn的示例。首先,我得理解用户的需求。曲线可能是指同时展示和曲线的组合表,或者是分别绘制这两种表。用户可能想在同一表中显示数据)和拟合曲线或趋势线,或者分开显示两种表。需要确认这一,但根据常见的需求,通常是组合。 接下来,我需要回忆matplotlib和seaborn的相关功能。Matplotlib中,可以使用plt.scatter绘制,plt.plot绘制曲线。而Seaborn则可能用sns.scatterplot和sns.lineplot来分别绘制,或者结合使用。例如,在同一个上先,再叠加曲线。 然后,我需要查找相关的引用内容。用户提供了四个引用,其中引用1、3、4涉及matplotlib和seaborn的示例。引用1是的例子,引用3是折线的例子,引用4是Seaborn的。这些可以作为代码示例的基础。需要确保代码正确,符合用户的要求,并且正确引用这些来源。 接下来,组织回答结构。用户需要方法和代码示例,所以应该分步骤说明,先介绍使用matplotlib的方法,再介绍Seaborn的方法。每个步骤中提供代码示例,并解释代码的关键部分。同时,需要确保代码的语法正确,比如正确导入库,使用正确的函数参数。 在编写代码时,要注意数据生成。例如,可以生成模拟数据,比如使用numpy生成x值,然后计算y值作为正弦函数或其他函数,再加上一些噪声作为数据。或者,使用真实数据的一部分,如iris数据,但需要确保示例简单易懂。 另外,需要注意表的美化,比如添加标题、坐标轴标签、例、网格等,这些在引用中的示例都有体现,需要参考这些来完善代码。 对于Seaborn部分,可能需要结合sns.scatterplot和sns.lineplot,或者在同一个上叠加两种表。同时,可以展示如何用Seaborn的风格来美化表,比如设置主题或调色板。 最后,生成相关问题,可能需要考虑用户可能进一步的问题,比如如何添加趋势线、如何保存表、如何处理真实数据等。需要确保问题相关且有帮助。 在检查过程中,要确保所有数学公式和代码块格式正确,如行内公式用$...$,独立公式用$$...$$。同时,引用标识要正确对应,比如引用1对应matplotlib的示例,引用3对应折线,引用4对应Seaborn的。 可能需要注意的问题:用户是否希望在同一表中同时显示和曲线,或者分开。根据常见情况,组合更常见,所以示例应该展示如何在同一中叠加两种形。需要确认代码的正确性,比如数据是否一致,例如使用相同的x和y数据,或者是原始数据,曲线是拟合后的结果。 总结步骤: 1. 使用matplotlib绘制曲线:生成数据,绘制绘制曲线,添加装饰。 2. 使用Seaborn绘制:加载数据或生成数据,使用sns.scatterplot和sns.lineplot,或者结合plt.plot。 3. 结合两者优势,比如用Seaborn美化样式,再用matplotlib添加曲线。 4. 提供相关问题,如美化表、处理真实数据、组合其他表类型等。 现在需要确保每个代码示例正确,并正确引用来源。例如,matplotlib部分引用1和3,Seaborn部分引用4。同时,解释代码时要简明,指出关键函数和参数的作用。</think>### 使用Python绘制曲线的方法及代码示例 #### 1. 使用Matplotlib绘制曲线 Matplotlib可通过组合`plt.scatter`()和`plt.plot`(曲线)实现曲线。以下示例生成模拟数据并展示两者的组合: ```python import matplotlib.pyplot as plt import numpy as np # 生成数据:x为0到10的等差数列,y为sin(x)加上随机噪声 x = np.linspace(0, 10, 50) y = np.sin(x) + np.random.randn(50) * 0.2 # 添加噪声模拟 # 绘制 plt.figure(figsize=(8, 6)) plt.scatter(x, y, color='red', label='Scatter Data', alpha=0.6) # 绘制平滑曲线(基于原始函数) x_smooth = np.linspace(0, 10, 200) y_smooth = np.sin(x_smooth) plt.plot(x_smooth, y_smooth, 'b-', linewidth=2, label='Sin Curve') # 添加表装饰 plt.title('Scatter and Curve Plot (Matplotlib)') plt.xlabel('X-axis') plt.ylabel('Y-axis') plt.legend() plt.grid(True) plt.show() ``` **关键说明**: - `plt.scatter`绘制时,通过`alpha`参数设置透明度以避免重叠遮挡。 - `plt.plot`绘制平滑曲线时,使用更密的数据使曲线连贯。 - 引用[1][3]中的基础表装饰方法(标题、标签、网格)被沿用。 #### 2. 使用Seaborn结合Matplotlib绘制 Seaborn可优化表样式,结合Matplotlib的函数绘制更美观的曲线: ```python import seaborn as sns import matplotlib.pyplot as plt import numpy as np # 设置Seaborn主题 sns.set_theme(style="darkgrid") # 生成数据(带噪声的余弦曲线) x = np.linspace(0, 10, 50) y = np.cos(x) + np.random.normal(0, 0.1, 50) # 绘制 plt.figure(figsize=(8, 6)) sns.scatterplot(x=x, y=y, color='green', label='Noisy Data', s=70) # 绘制拟合曲线(使用多项式拟合) coefficients = np.polyfit(x, y, deg=5) # 5次多项式拟合 x_fit = np.linspace(0, 10, 200) y_fit = np.polyval(coefficients, x_fit) plt.plot(x_fit, y_fit, 'orange', linestyle='--', label='Fitted Curve') # 添加装饰 plt.title('Scatter with Fitted Curve (Seaborn)') plt.xlabel('X Values') plt.ylabel('Y Values') plt.legend() plt.show() ``` **关键说明**: - `sns.set_theme(style="darkgrid")`调用Seaborn的深色网格主题提升视觉效果[^4]。 - 使用`np.polyfit`对数据进行多项式拟合,生成平滑曲线。 - 引用[4]中的Seaborn数据可视化方法被扩展应用。 #### 3. 进阶应用:真实数据示例 以鸢尾花数据为例,展示花瓣长度与宽度的分布及核密度估计曲线: ```python import seaborn as sns import matplotlib.pyplot as plt # 加载数据 iris = sns.load_dataset('iris') # 绘制(花瓣长度 vs 花瓣宽度) sns.scatterplot(x='petal_length', y='petal_width', data=iris, hue='species', palette='viridis') # 添加核密度估计曲线 sns.kdeplot(x='petal_length', y='petal_width', data=iris, levels=5, color='black', alpha=0.5) # 表装饰 plt.title('Iris Petal Dimensions with Density Contours') plt.xlabel('Petal Length (cm)') plt.ylabel('Petal Width (cm)') plt.legend(title='Species') plt.show() ``` **关键说明**: - `sns.kdeplot`绘制多维核密度估计曲线,反映数据分布密度[^4]。 - `palette='viridis'`优化颜色映射,提升分类辨识度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值