簡體   English   中英

多值直方圖作為散點圖和直方圖的組合圖

[英]Multivalued Histogram as combined scatter and histogram plot

對於研究中的某些事情,我有一些理論計算。 我想通過采用理論值並將其從實驗值中減去來表示此數據的准確性。 這留下了一些我想繪制以顯示此數據的差異。

我對要查找的情節類型進行了模擬表示。 紅線是曲線的零,表示理論值和實驗值之間沒有差異。 x軸具有V1,V2,...,VN,它們是要計算的不同事物。 問題在於每個V都有兩個或三個之間的值,在我制作的模擬圖中用“ X”表示。

顯示問題的示例圖片

我對如何執行此操作有些迷茫。 我嘗試使用Gnuplot查看多值直方圖,盡管它變成空的。 誰能對此提供任何見解,或者有可行的示例Gnuplot腳本? 如果您知道用Python或其他方式執行此操作的方法,我也願意使用其他方法。 問題是我對Python一無所知。

使用gnuplot有幾種方法可以實現此目的。 這是一個我認為很合理的選擇:

  1. 將屬於一個v值的值存儲在一個數據塊中。 兩個數據塊之間用兩條新行隔開。 因此,示例數據文件可能是:

     # v1 values -0.5 1.1 0.4 -0.2 # v2 values -0.1 0.1 -0.7 # v3 values 0.9 0.5 0.2 
  2. 標簽存儲在字符串中,以空格分隔。 (為此,您只能使用本身不包含空格的標簽,引用不起作用)。

     labels = "v1 v2 v3" 
  3. 作為x軸的數值,您可以獲取數據塊的編號,該編號是通過特殊列-2 ,即using (column(-2)) 該數字還可用於訪問labels字符串中的相應標簽。

這是一個示例腳本:

set xzeroaxis lc rgb 'red' lt 1 lw 2
set offset 0.2,0.2,0,0
set xtics 1
unset key
set linetype 1 linetype 2 lc rgb 'black' lw 2
labels = "v1 v2 v3"
plot 'data.dat' using (column(-2)):1:xtic(word(labels, column(-2)+1))

4.6.5的結果是:

在此處輸入圖片說明

當然,根據您的實際需求,您可以有很多選擇來修改或擴展此腳本。

您似乎沒有在計算任何東西,因此您的圖不是直方圖。 這是一堆水平排列的垂直一維散點圖。

以下內容使用matplotlib來接近您的模型(出於習慣,我將“ Differences”重命名為相當傳統的術語“ Residuals”):

import numpy as np
import matplotlib.pyplot as plt


np.random.seed(123)

# Demo data consists of a list of names of the "variables",
# and a list of the residuals (in numpy arrays) for each variable.
names = ['V1', 'V2', 'V3', 'V4']

r1 = np.random.randn(3)
r2 = np.random.randn(2)
r3 = np.random.randn(3)
r4 = np.random.randn(3)
residuals = [r1, r2, r3, r4]

# Make the plot

for k, (name, res) in enumerate(zip(names, residuals)):
    plt.plot(np.zeros_like(res) + k, res, 'kx',
             markersize=7.0, markeredgewidth=2)

plt.ylabel("Residuals", fontsize=14)
plt.xlim(-1, len(names))
ax = plt.gca()
ax.set_xticks(range(len(names)))
ax.set_xticklabels(names)
plt.axhline(0, color='r')

plt.show()

繪制殘差

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM