使用line函数绘制折线图怎么设置长宽高
时间: 2024-01-18 18:04:40 浏览: 59
在使用`plt.plot()`函数绘制折线图时,可以通过设置`figsize`参数来调整图形的长宽比例,如下所示:
```python
import matplotlib.pyplot as plt
# 创建一个大小为10x5的图形
plt.figure(figsize=(10,5))
# 绘制折线图
plt.plot(x_data, y_data)
# 显示图形
plt.show()
```
其中,`figsize`的参数是一个元组,第一个元素表示图形的宽度,第二个元素表示图形的高度,单位是英寸。在上面的代码中,我们设置了一个大小为10x5的图形。
相关问题
line_chart函数绘制曲线图公式 pie_chart函数绘制饼图公式 fl_chart函数绘制折线图公式
在Matplotlib库中,这三个函数分别用于绘制不同类型的数据可视化图表:
1. **line_chart** (折线图):
```python
import matplotlib.pyplot as plt
x_data = [数据点1, 数据点2, ..., 数据点n] # 横坐标数据
y_data = [对应点1, 对应点2, ..., 对应点n] # 纵坐标数据
plt.plot(x_data, y_data)
plt.xlabel('X轴标签') # X轴标签
plt.ylabel('Y轴标签') # Y轴标签
plt.title('标题') # 图表标题
plt.show() # 显示图形
```
2. **pie_chart** (饼图):
```python
labels = ['部分A', '部分B', ..., '部分N'] # 饼图各个部分的标签
sizes = [部分A大小, 部分B大小, ..., 部分N大小] # 各部分的比例数据
fig1, ax1 = plt.subplots()
ax1.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140) # 自动百分比显示
ax1.axis('equal') # 保持圆形
plt.title('饼状图')
plt.show()
```
3. **fl_chart** (这可能是某种特定的函数名,如finance chart,实际的Matplotlib中并无此直接名称。如果是指金融时间序列折线图,可以这样做):
```python
import pandas as pd
df = pd.read_csv('financial_data.csv') # 假设有个CSV文件包含金融数据
df['date'] = pd.to_datetime(df['date']) # 将日期列转换为datetime类型
plt.figure(figsize=(10,6))
plt.plot(df['date'], df['price'], label='价格')
plt.plot(df['date'], df['volume'], label='成交量')
plt.legend()
plt.title('金融时间序列折线图')
plt.show()
```
请注意,`fl_chart` 可能需要根据具体的金融数据结构和你的需求定制。
CSHARP生成带噪声的正弦曲线并使用绘制折线图,使用S-G滤波后绘制折线图
以下是使用C#生成带噪声的正弦曲线并使用S-G滤波后绘制折线图的示例代码:
```csharp
using System;
using System.Drawing;
using System.Windows.Forms;
using MathNet.Numerics;
using MathNet.Numerics.Interpolation;
using MathNet.Numerics.LinearAlgebra;
using MathNet.Numerics.LinearAlgebra.Double;
using ZedGraph;
namespace SGFilterDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 生成带噪声的正弦曲线
int n = 200; // 数据点数
double[] t = new double[n];
double[] y = new double[n];
double[] yNoisy = new double[n];
for (int i = 0; i < n; i++)
{
t[i] = i * 0.1;
y[i] = Math.Sin(t[i]);
yNoisy[i] = y[i] + 0.1 * (2 * Random.NextDouble() - 1);
}
// 使用S-G滤波平滑曲线
int windowSize = 21; // 滑动窗口大小
int polyOrder = 3; // 多项式阶数
double[] ySmooth = SGFilter(yNoisy, windowSize, polyOrder);
// 绘制折线图
GraphPane pane = zedGraphControl1.GraphPane;
pane.Title.Text = "S-G Filter Demo";
pane.XAxis.Title.Text = "Time";
pane.YAxis.Title.Text = "Amplitude";
LineItem curve1 = pane.AddCurve("Original Signal", t, y, Color.Blue, SymbolType.None);
LineItem curve2 = pane.AddCurve("Noisy Signal", t, yNoisy, Color.Red, SymbolType.None);
LineItem curve3 = pane.AddCurve("Smoothed Signal", t, ySmooth, Color.Green, SymbolType.None);
pane.AxisChange();
zedGraphControl1.Invalidate();
}
// S-G滤波函数
private double[] SGFilter(double[] y, int windowSize, int polyOrder)
{
int n = y.Length;
int halfWindowSize = windowSize / 2;
double[] yPadded = new double[n + windowSize - 1];
Vector<double> b = SGFilterCoefficients(polyOrder, windowSize);
double[] ySmooth = new double[n];
for (int i = 0; i < n; i++)
{
for (int j = -halfWindowSize; j <= halfWindowSize; j++)
{
int k = i + j;
if (k < 0)
k = -k;
if (k >= n)
k = 2 * n - k - 2;
yPadded[i + halfWindowSize] += y[k] * b[Math.Abs(j)];
}
}
for (int i = 0; i < n; i++)
{
ySmooth[i] = yPadded[i + halfWindowSize];
}
return ySmooth;
}
// S-G滤波系数计算函数
private Vector<double> SGFilterCoefficients(int polyOrder, int windowSize)
{
// 计算多项式系数矩阵
Matrix<double> X = DenseMatrix.Create(windowSize, polyOrder + 1, (i, j) => Math.Pow(i - windowSize / 2, j));
// 计算伪逆矩阵
Matrix<double> Xp = X.PseudoInverse();
// 计算S-G滤波系数向量
Vector<double> b = DenseVector.Create(windowSize, 0);
for (int i = 0; i < windowSize; i++)
{
b[i] = Xp.Row(polyOrder) * DenseVector.Create(polyOrder + 1, j => Math.Pow(i - windowSize / 2, j));
}
return b;
}
}
}
```
需要注意的是,以上代码中使用了MathNet.Numerics库来进行矩阵运算和插值计算,需要先使用NuGet安装该库。另外,以上代码中使用了ZedGraph库来绘制折线图,也需要先使用NuGet安装该库。
阅读全文