matplotlib 绘制标记线
时间: 2023-07-17 12:59:21 浏览: 42
要在matplotlib中绘制标记线,你可以使用`ax.axvline()`或`ax.axhline()`函数,分别绘制垂直和水平标记线。
下面是一个示例代码,说明如何使用`ax.axvline()`和`ax.axhline()`函数绘制标记线:
```python
import matplotlib.pyplot as plt
# 创建一个图形和坐标轴对象
fig, ax = plt.subplots()
# 绘制一个简单的曲线图
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
ax.plot(x, y)
# 绘制垂直标记线
ax.axvline(x=3, color='r', linestyle='--')
# 绘制水平标记线
ax.axhline(y=10, color='g', linestyle='-.')
# 显示图形
plt.show()
```
在上面的示例中,我们首先创建一个图形和坐标轴对象。然后,我们使用`ax.plot()`函数绘制一个简单的曲线图。接下来,我们使用`ax.axvline()`函数在x = 3的位置绘制一个垂直标记线,颜色为红色,线型为虚线。最后,我们使用`ax.axhline()`函数在y = 10的位置绘制一个水平标记线,颜色为绿色,线型为点划线。最后,使用`plt.show()`函数显示图形。
你可以根据需要调整标记线的位置、颜色和线型等参数来满足你的需求。
相关问题
matplotlib绘制k线图
要使用matplotlib绘制k线图,需要以下步骤:
1. 导入matplotlib库以及其他需要的库:
```python
import matplotlib.pyplot as plt
import mpl_finance as mpf
import pandas as pd
```
2. 准备数据。k线图通常使用开盘价、最高价、最低价和收盘价来绘制。这些数据可以从一个pandas数据框中提取:
```python
data = pd.read_csv('data.csv')
open_price = data['open']
high_price = data['high']
low_price = data['low']
close_price = data['close']
```
3. 创建一个子图并绘制k线图。可以使用mpl_finance库中的candlestick_ochl函数来绘制k线图:
```python
fig, ax = plt.subplots(figsize=(10,5))
mpf.candlestick_ochl(ax, zip(range(len(data)), open_price, close_price, high_price, low_price), width=0.4, colorup='r', colordown='g')
```
这里创建了一个10x5的子图,然后使用zip函数将开盘价、收盘价、最高价和最低价打包在一起,然后将它们传递给candlestick_ochl函数来绘制k线图。width参数控制k线的宽度,colorup和colordown参数控制上涨和下跌的颜色。
4. 添加x轴和y轴标签以及其他的样式和标记:
```python
ax.set_xticks(range(0, len(data), 30))
ax.set_xticklabels(data['date'][::30])
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.xaxis_date()
ax.grid(True)
plt.title('Stock Price')
plt.show()
```
这些代码将x轴标记设置为每30个交易日一个标记,并将标记的标签设置为日期。然后设置x轴和y轴的标签,并将x轴的刻度设置为日期格式。最后添加网格和标题,并显示图形。
完整的代码如下:
```python
import matplotlib.pyplot as plt
import mpl_finance as mpf
import pandas as pd
data = pd.read_csv('data.csv')
open_price = data['open']
high_price = data['high']
low_price = data['low']
close_price = data['close']
fig, ax = plt.subplots(figsize=(10,5))
mpf.candlestick_ochl(ax, zip(range(len(data)), open_price, close_price, high_price, low_price), width=0.4, colorup='r', colordown='g')
ax.set_xticks(range(0, len(data), 30))
ax.set_xticklabels(data['date'][::30])
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.xaxis_date()
ax.grid(True)
plt.title('Stock Price')
plt.show()
```
matplotlib绘制棉棒图
以下是使用matplotlib绘制棉棒图的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.linspace(0, 10, 10)
y = np.random.randn(10)
# 绘制棉棒图
plt.stem(x, y, linefmt="-", markerfmt="o", basefmt="-")
# 显示图像
plt.show()
```
在这个示例中,我们使用numpy生成了一组随机数据,然后使用`plt.stem()`函数绘制了棉棒图。其中,`linefmt`参数指定了棉棒的线条格式,`markerfmt`参数指定了棉棒顶部的标记格式,`basefmt`参数指定了棉棒底部的线条格式。
需要注意的是,棉棒图和柱状图的区别在于,棉棒图更类似于折线图,表现的是数据的变化趋势。因此,棉棒图的y轴数值可以包含负值。