Python Matplotlib画散点图并保存图片!

Python Matplotlib画散点图并保存图片!

python代码

#@Project filename:PythonDemo  Draw-Scatter
#@IDE   :PyCharm
#@Author :ganxiang
#@Date   :2020/01/06 13:36
import matplotlib.pyplot as plt
import numpy as np
# plt.scatter() 展示变量之间的关系
x = np.linspace(0.05,10,1000)
y = np.random.rand(1000)
plt.figure(figsize=(10,8),dpi=100) #设置画布大小,像素
plt.scatter(x,y,label='scatter figure') #画散点图并指定图片标签
plt.legend() #显示图片中的标签
plt.savefig('./data/scatter.jpg')#保存图片
plt.show()#展示图片

效果展示
在这里插入图片描述
在这里插入图片描述

<think>好的,我现在需要帮助用户解决如何使用Seaborn和Matplotlib绘制带有中文标签的散点图的问题。首先,我得回想一下用户提供的引用内容,特别是引用[2]中的信息,里面提到了设置字体和背景颜色来避免中文乱码。用户可能已经遇到中文显示为方框的问题,所以需要正确配置字体。 接下来,我需要确定绘制散点图的具体步骤。用户提到了Seaborn和Matplotlib,所以应该使用Seaborn的scatterplot函数,结合Matplotlib进行定制化设置。记得导入必要的库,比如pandas可能用于数据处理,但用户的问题主要是绘图,所以重点在Seaborn和Matplotlib。 然后,设置中文字体是关键步骤。根据引用[2],使用sns.set来配置Seaborn的全局设置,包括字体和背景颜色。需要确保字体设置为支持中文的,比如‘SimHei’或者‘Arial Unicode MS’。同时,可能还需要用Matplotlib的rcParams来设置字体,防止某些情况下Seaborn的设置不生效。 生成示例数据部分,用户可能需要一个简单的数据集来演示,所以创建x和y的列表,或者使用随机数据都可以。然后使用sns.scatterplot绘制散点图,之后用Matplotlib添加标题和轴标签,这些标签需要是中文的,所以必须确保字体正确。 另外,用户可能需要调整图形的大小或者颜色,所以可以建议使用plt.figure来设置尺寸,或者通过Seaborn的参数调整点的颜色和大小。最后,显示图形用plt.show(),或者保存图片文件。 还需要考虑潜在的问题,比如用户的环境是否安装了中文字体,如果没有可能需要额外步骤下载字体或者指定系统字体路径。但根据引用[2]中的示例,使用‘simhei’(黑体)是一种常见解决方案,可能在大多数中文环境下可用。 最后,生成相关问题时要围绕散点图的扩展应用、样式美化、动态交互以及中文字体问题,这些都是用户可能进一步感兴趣的方面。</think>### 使用Seaborn和Matplotlib绘制中文标签散点图的步骤 1. **配置中文字体** 通过`seaborn.set()`全局设置字体,指定支持中文的字体(如`SimHei`),避免中文标签显示为方框[^2]。同时使用`matplotlib.rcParams`确保字体设置生效。 2. **生成示例数据** 创建包含中文标签的示例数据集,使用`pandas.DataFrame`或列表存储数据。 3. **绘制散点图** 使用`seaborn.scatterplot()`绘制基础散点图通过`matplotlib`添加标题、轴标签等元素。 #### 完整代码示例 ```python # 导入库 import seaborn as sns import matplotlib.pyplot as plt import pandas as pd import numpy as np # 1. 配置中文字体和样式 sns.set(rc={ "axes.facecolor": "#FFF9ED", # 背景色 "figure.facecolor": "#FFF9ED", "font.sans-serif": ["SimHei", "Arial"] # 中文优先 }) plt.rcParams["font.sans-serif"] = ["SimHei"] # 备用设置 # 2. 生成示例数据(包含中文标签) data = pd.DataFrame({ "销售额": np.random.randint(100, 500, 50), "成本": np.random.randint(50, 300, 50), "产品类别": ["A类" if x < 25 else "B类" for x in range(50)] }) # 3. 绘制散点图 plt.figure(figsize=(10, 6)) sns.scatterplot( data=data, x="成本", y="销售额", hue="产品类别", # 按类别区分颜色 palette=["#FF6F61", "#6B5B95"], # 自定义颜色 s=100 # 点大小 ) # 添加标签和标题 plt.title("产品销售额与成本关系散点图") plt.xlabel("成本(万元)") plt.ylabel("销售额(万元)") plt.grid(True, linestyle="--", alpha=0.6) # 显示图形 plt.show() ``` #### 关键配置说明 | 配置项 | 作用 | 示例值 | |-----------------------|-----------------------------------|-----------------------------| | `font.sans-serif` | 定义支持中文的字体栈 | `["SimHei", "Arial"]` | | `axes.facecolor` | 设置坐标区背景色 | `"#FFF9ED"` | | `hue` | 根据字段自动分组着色 | `hue="产品类别"` | | `palette` | 自定义颜色组合 | `["#FF6F61", "#6B5B95"]` |
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值