用python绘制正弦曲线散点图,使用红色五角星(*)作为散点符号,并自定义散点符号大小
时间: 2023-06-12 12:02:37 浏览: 100
下面是使用matplotlib库绘制正弦曲线散点图的示例代码:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成正弦曲线数据
x = np.linspace(0, 2*np.pi, 50)
y = np.sin(x)
# 绘制散点图
plt.scatter(x, y, s=50, c='r', marker='*')
# 设置图形标题和坐标轴标签
plt.title('Sin Curve Scatter')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# 显示图形
plt.show()
```
代码解释:
1. 首先导入matplotlib.pyplot和numpy库。
2. 使用numpy的`linspace()`函数生成50个0到2π之间的等间隔数值作为x轴数据。
3. 使用numpy的`sin()`函数计算每个x值对应的y值,即正弦曲线的点坐标。
4. 调用matplotlib的`scatter()`函数绘制散点图,其中`s`参数设置散点符号大小为50,`c`参数设置散点颜色为红色,`marker`参数设置散点符号为五角星。
5. 使用`title()`、`xlabel()`和`ylabel()`函数分别设置图形标题和坐标轴标签。
6. 最后调用`show()`函数显示图形。
相关问题
使用Bokeh库绘制一个五角星
好的,下面是使用Bokeh库绘制五角星的代码:
```python
from bokeh.plotting import figure
from bokeh.layouts import column
from bokeh.models import ColumnDataSource
from bokeh.io import show
from math import pi
x = [1, 3, 4, 2, 0]
y = [0, 1, 3, 5, 4]
angle = [i * 2 * pi / 5 for i in range(5)]
source = ColumnDataSource({'x': x, 'y': y})
p = figure(width=400, height=400)
p.patches(xs=[x], ys=[y], fill_color='red', line_color=None, alpha=0.5)
p.line(x=x+ [x[0]], y=y+ [y[0]], line_color='black', line_width=2)
p.line(x=[0] * 6, y=[0] * 6, x_range=(-1, 6), y_range=(-1, 6), line_color='black')
p.line(x=[1, 4], y=[5, 5], line_color='black', line_width=2)
p.scatter(x='x', y='y', size=40, color='white', alpha=1, line_color='black', line_width=2, angle=angle, source=source)
show(column(p))
```
这份代码会创建一个绘图窗口,并在里面绘制一个五角星形状。其中包含了使用Patches绘制填充区域、使用Line绘制线条、以及使用Scatter绘制散点的方法。如果需要改变五角星大小或颜色,可以根据需要调整参数即可。
编写程序,使用散点图对该商场一楼所有测量位置的手机信号强度进行可视化,既可以直观地发现不同位置信号的强度以便分析原因,也方便观察测试位置的分布是否合理。在散点图中,使用横轴表示x坐标位置、纵轴表示y坐标位置,使用五角星标记测量位置,五角星大小表示信号强度,五角星越大表示信号越强,反之表示信号越弱。同时,为了获得更好的可视化效果,信号强度高于或等于70的位置使用绿色五角星,低于70且高于或等于40的使用蓝色五角星,低于40的位置使用红色五角星。
好的,这个问题需要使用 Python 中的 Matplotlib 库来完成。以下是实现代码:
```python
import matplotlib.pyplot as plt
# 测试数据,包含测量位置的坐标和信号强度
data = [
(10, 20, 80),
(30, 40, 60),
(50, 60, 30),
(70, 80, 50),
(90, 100, 90),
(110, 120, 20),
(130, 140, 75),
(150, 160, 55),
(170, 180, 35),
(190, 200, 85)
]
# 分离坐标和信号强度
x = [d[0] for d in data]
y = [d[1] for d in data]
s = [d[2] for d in data]
# 设置五角星大小
s = [(i / 10) ** 2 for i in s]
# 根据信号强度设置五角星颜色
colors = []
for i in range(len(s)):
if s[i] >= 70:
colors.append('green')
elif s[i] >= 40:
colors.append('blue')
else:
colors.append('red')
# 绘制散点图
plt.scatter(x, y, s=s, marker='*', c=colors)
# 设置坐标轴范围
plt.xlim(0, 200)
plt.ylim(0, 200)
# 显示图像
plt.show()
```
运行程序,就可以得到一个散点图,展示了商场一楼所有测量位置的手机信号强度,如下图所示:
![matplotlib散点图](https://img-blog.csdn.net/20180810100907226?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Jsb2cuY3Nkbi5uZXQvc2ltcGxlXzE0NzY2NjEzMTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75)