こんにちは、qwtspectrogram を使用して配列データをプロットしていますが、問題はスケーリングです。qwt スケールは間隔 x と y に分散され、軸はピクセルに依存します。たとえば、(500x500) のデータ セット ベクトルがあり、500mm x500mm をプロットしたい場合、ピクセル上で変換されるため完璧ですが、300mmx300mm のポイント数 500x500 をプロットしたい場合、それは混乱して表示されますプロット 500x500 x 軸と y 軸を管理する必要があることはわかっていますが、その方法がわかりません。少し遊んで、250mmx250mmの領域で500x500を表示することはできますが、他の領域ではできません。私のコードは以下のとおりです
class mydata: public QwtRasterData
{
char filepath[35];
QFile myfile;
QVector<qint16> fileBuf;
int pixel =500; // it represents the number of pixels in one row or column
int dial =1000;
public:
mydata()
{
setInterval( Qt::XAxis, QwtInterval( 0, (pixel)-1 ) );
setInterval( Qt::YAxis, QwtInterval( 0, (pixel)-1 ) );
setInterval( Qt::ZAxis, QwtInterval( -dial, dial ) );
{
sprintf_s(filepath, "c:\\myfile.bin");
myfile.setFileName(filepath);
if(!myfile.open(QIODevice::ReadOnly)) return;
QDataStream data(&myfile);
data.setByteOrder(QDataStream::LittleEndian);
while(!data.atEnd()) {
qint16 x;
data >> x;
fileBuf.append(x);
}
myfile.close();
}
}
virtual double value( double x, double y ) const//shifted
{
int x_pos = static_cast<int>(x);
int y_pos = static_cast<int>(y);
double c = (fileBuf[ ((x_pos)+((pixel-(y_pos))*pixel))]);
return c;
}
}
要するに、私は異なる領域に対して同じ数のピクセルを持っていますが、プロットの軸の表現は同じです。