Cara memplot tren dengan benar

45

Saya membuat grafik untuk menunjukkan tren tingkat kematian (per 1000 ppl.) Di berbagai negara dan kisah yang harus berasal dari plot adalah bahwa Jerman (garis biru muda) adalah satu-satunya yang trennya meningkat setelah 1932. Ini adalah percobaan (dasar) pertama saya

masukkan deskripsi gambar di sini

Menurut pendapat saya, grafik ini sudah menunjukkan apa yang ingin kita katakan tetapi tidak super intuitif. Apakah Anda punya saran untuk membuatnya lebih jelas bahwa perbedaan di antara tren? Saya berpikir untuk merencanakan tingkat pertumbuhan tetapi saya mencoba dan itu tidak lebih baik.

Data adalah sebagai berikut

year     de     fr      be       nl     den      ch     aut     cz       pl
1927    10.9    16.5    13      10.2    11.6    12.4    15      16      17.3
1928    11.2    16.4    12.8    9.6     11      12      14.5    15.1    16.4
1929    11.4    17.9    14.4    10.7    11.2    12.5    14.6    15.5    16.7
1930    10.4    15.6    12.8    9.1     10.8    11.6    13.5    14.2    15.6
1931    10.4    16.2    12.7    9.6     11.4    12.1    14      14.4    15.5
1932    10.2    15.8    12.7    9       11      12.2    13.9    14.1    15
1933    10.8    15.8    12.7    8.8     10.6    11.4    13.2    13.7    14.2
1934    10.6    15.1    11.7    8.4     10.4    11.3    12.7    13.2    14.4
1935    11.4    15.7    12.3    8.7     11.1    12.1    13.7    13.5    14
1936    11.7    15.3    12.2    8.7     11      11.4    13.2    13.3    14.2
1937    11.5    15      12.5    8.8     10.8    11.3    13.3    13.3    14
PhDing
sumber
2
Data dari Italia dan Spanyol akan menarik sebagai perbandingan. Mereka juga memiliki pemerintah fasis sekitar waktu itu.
asmaier
1
di samping ide-ide bagus yang diberikan dalam jawaban, pastikan untuk memulai plot Anda pada 0 (sumbu y) sehingga besaran perubahan relatif lebih terlihat.
WoJ
2
@ WoW Saya mengerti maksud Anda, tetapi dalam praktiknya kisarannya berkisar antara 9 hingga 18 per 1000, jadi setengah ruang grafik akan dihabiskan untuk menunjukkan bahwa angka kematiannya tidak nol. Saya pikir itu sebabnya kebanyakan orang (termasuk saya) tidak ingin melakukan itu dalam jawaban mereka sejauh ini. Pertimbangkan di mana kriteria Anda berhenti, misalnya apakah Anda bersikeras bahwa plot variasi historis dalam ketinggian orang dewasa semuanya dimulai dari nol? Diskusi lebih lanjut di eg stats.stackexchange.com/questions/184525/…
Nick Cox
1
Daripada memikirkan grafik, saya lebih dulu bertanya-tanya apa yang mendasari data dan analisisnya. Faktor-faktor apa yang terlibat dengan angka kematian? Apakah angka kematian berkurang lebih cepat jika sudah tinggi (misalnya Polandia)? Apakah tingkat kematian dataran tinggi pada tingkat tertentu? Apakah efek dataran tinggi ini (yang lebih kuat untuk Jerman) mungkin membuat peningkatan untuk Austria (dalam beberapa tahun terakhir) efek yang lebih kuat? Grafik adalah semacam data mentah (masih perlu dianalisis) dan pada saat yang sama itu diturunkan (angka-angkanya bukan pengukuran sederhana tetapi diturunkan) ini membuat menyoroti 1 efek sulit.
Sextus Empiricus
1
Juga, Anda lebih baik menunjukkan periode yang lebih besar daripada hanya 10 tahun. Fokus pada sepuluh tahun ini hanya adil ketika Anda menunjukkan lingkungan. Sangat umum melihat close up yang kurang masuk akal dalam perspektif yang lebih luas. Ketika kurva ini naik dan turun seperti gelombang dalam badai, maka Anda harus menunjukkan seluruh lautan dan bukan hanya satu gelombang yang kebetulan berkorelasi dengan cerita yang bagus. (Saya yakin ada contoh oleh Tufte yang menunjukkan prinsip ini)
Sextus Empiricus

Jawaban:

53

Terkadang lebih sedikit lebih banyak. Dengan sedikit detail tentang variasi tahun ke tahun dan perbedaan negara Anda dapat memberikan informasi lebih lanjut tentang tren. Karena negara-negara lain sebagian besar bergerak bersama, Anda dapat bertahan tanpa warna terpisah.

Dalam menggunakan yang lebih halus, Anda membutuhkan pembaca untuk percaya bahwa Anda belum merapikan variasi yang menarik.

masukkan deskripsi gambar di sini

Perbarui setelah mendapatkan beberapa permintaan untuk kode :

Saya membuat ini di Graph Builder interaktif JMP . Skrip JMP adalah:

Graph Builder(
Size( 528, 456 ), Show Control Panel( 0 ), Show Legend( 0 ),
// variable role assignments:
Variables( X( :year ), Y( :Deaths ), Overlay( :Country ) ),
// spline smoother:
Elements( Smoother( X, Y, Legend( 3 ) ) ),
// customizations:
SendToReport(
    // x scale, leaving room for annotations
    Dispatch( {},"year",ScaleBox,
        {Min( 1926.5 ), Max( 1937.9 ), Inc( 2 ), Minor Ticks( 1 )}
    ),
    // customize colors and DE line width
    Dispatch( {}, "400", ScaleBox, {Legend Model( 3,
        Properties( 0, {Line Color( "gray" )}, Item ID( "aut", 1 ) ),
        Properties( 1, {Line Color( "gray" )}, Item ID( "be", 1 ) ),
        Properties( 2, {Line Color( "gray" )}, Item ID( "ch", 1 ) ),
        Properties( 3, {Line Color( "gray" )}, Item ID( "cz", 1 ) ),
        Properties( 4, {Line Color( "gray" )}, Item ID( "den", 1 ) ),
        Properties( 5, {Line Color( "gray" )}, Item ID( "fr", 1 ) ),
        Properties( 6, {Line Color( "gray" )}, Item ID( "nl", 1 ) ),
        Properties( 7, {Line Color( "gray" )}, Item ID( "pl", 1 ) ),
        Properties( 8, {Line Color("dark red"), Line Width( 3 )}, Item ID( "de", 1 ))
    )}),
    // add line annotations (omitted)

));

xan
sumber
4
Dalam pengalaman saya, seri smoothing adalah praktik yang sangat langka dalam ilmu sosial.
luchonacho
6
Mungkin itu alasan untuk menunjukkan kepada mereka sesuatu yang baru dan berguna?
kjetil b halvorsen
9
Terlepas dari norma-norma dalam ilmu sosial, saya menemukan smoothing menyembunyikan drop off yang terjadi pada tahun 1930 dan peningkatan yang terjadi pada tahun 1935. Lonjakan di berbagai negara yang terjadi pada tahun 1929 juga dikaburkan. Kalau tidak, saya sangat menyukai pendekatan sederhana ini.
Underminer
7
Memberi +1 hanya menggunakan dua warna (mungkin membuat abu-abu lebih terang?) Dan menghindari legenda dengan menempatkan nama negara di sebelah kanan. -1 untuk perataan, yang membuang informasi tanpa alasan yang jelas. Jadi saya tidak perlu memilih ;-)
S. Kolassa - Reinstate Monica
10
@StephanKolassa Saya pikir titik xan adalah ada adalah alasan yang baik untuk informasi membuang: fokus pada tren secara keseluruhan, bukan variabilitas tahun-ke-tahun "suara". Sampai batas tertentu, Anda sudah "membuang informasi" - Anda sedang melihat angka tahunan. Saya ragu grafik akan ditingkatkan dengan memplotkan tarif harian, di mana "jangan buang informasi" membawa Anda, ad absurdum . - Memang benar beberapa tren dikaburkan oleh perataan, tetapi yang lain (seperti variasi musiman) dikaburkan oleh pilihan tingkat tahunan. Ada kepercayaan yang terlibat bahwa variasi yang relevan masih ditampilkan.
RM
39

Ada jawaban yang bagus di sini. Biarkan saya membawa Anda pada kata Anda bahwa Anda ingin menunjukkan bahwa tren untuk Jerman berbeda dari yang lain. Level vs perubahan adalah perbedaan umum dalam ekonomi. Data Anda ada di level , tetapi pertanyaan Anda dinyatakan mencari perubahan . Cara untuk melakukannya adalah dengan menetapkan level referensi (di sini 1932) sebagai . Dari sana, setiap tahun berturut-turut adalah sebagian kecil dari tahun sebelumnya. (Adalah umum untuk mengambil log untuk membuat perubahan lebih stabil dan simetris. Ini memang mengubah arti angka yang tepat, jika Anda benar-benar ingin seseorang mendapatkan itu dari plot, tetapi biasanya untuk hal semacam ini, orang ingin menjadi dapat melihat polanya.) Anda kemudian mendapatkan jumlah lari untuk setiap seri dan kalikan dengan100 1001100dengan perjanjian. Itu yang kau plot. Kasing Anda sedikit kurang umum karena titik referensi Anda ada di tengah-tengah seri Anda, jadi saya menjalankan ini di kedua arah dari tahun 1932. Di bawah ini adalah contoh sederhana, dikodekan dalam R (akan ada banyak cara untuk membuat kode dan plot lebih bagus, tetapi ini harus menunjukkan ide secara langsung). Saya membuat garis untuk Jerman lebih tebal untuk membedakannya dalam legenda, dan saya menambahkan garis referensi pada . Sangat mudah untuk melihat bahwa Jerman menonjol dari yang lain. Anda juga dapat melihat bahwa semua negara lain berakhir dengan tingkat yang lebih rendah pada 1937 dari 1932, dan bahwa perubahan tahun demi tahun mereka berfluktuasi jauh lebih sedikit di tahun-tahun setelah 1932 daripada di tahun-tahun menjelang itu. 100

d = read.table(text="
year     de     fr      be       nl     den      ch     aut     cz       pl
1927    10.9    16.5    13      10.2    11.6    12.4    15      16      17.3
...
1937    11.5    15      12.5    8.8     10.8    11.3    13.3    13.3    14",
header=T)

d2          = d  # we'll end up needing both
d2[6,2:10]  = 1  # set 1932 as 1
for(j in 2:10){   
  for(i in 7:11){
      # changes moving forward from 1932:
    d2[i,j] = log( d[i,j]/d[i-1,j] )
      # running sum moving forward from 1932:
    d2[i,j] = d2[i,j]+d2[i-1,j]
  }
  for(i in 5:1){
      # changes moving backward from 1932:
    d2[i,j] = log( d[i,j]/d[i+1,j] )
      # running sum moving forward from 1932:
    d2[i,j] = d2[i+1,j]+d2[i,j]
  }
}
d2[,2:10]   = d2[,2:10]*100  # multiply all values by 100

windows()  # plot of changes
  plot(1,1, xlim=c(1927,1937), ylim=c(82,118), xlab="Year", 
       ylab="Change from 1932", main="European death rates")
  abline(h=100, col="lightgray")
  for(j in 2:10){
    lines(1927:1937, d2[,j], col=rainbow(9)[j-1], lwd=ifelse(j==2,2,1))
  }
  legend("bottomleft", legend=colnames(d2)[2:10], lwd=c(2,rep(1,8)), lty=1, 
         col=rainbow(9), ncol=2)

windows()  # plot of levels
  plot(1,1, xlim=c(1927,1937), ylim=c(8,18.4), xlab="Year", 
       ylab="Deaths per thousand", main="European death rates")
  abline(h=d[6,2:10], col="gray90")
  points(rep(1932,9), d[6,2:10], col=rainbow(9), pch=16)
  for(j in 2:10){
    lines(1927:1937, d[,j], col=rainbow(9)[j-1], lwd=ifelse(j==2,2,1))
  }
  legend("topright", legend=colnames(d)[2:10], lwd=c(2,rep(1,8)), lty=1, 
         col=rainbow(9), ncol=2)

masukkan deskripsi gambar di sini

Sebaliknya, di bawah ini adalah plot data yang sesuai di tingkat. Meskipun demikian, saya mencoba membuatnya mungkin untuk melihat bahwa Jerman sendiri naik setelah tahun 1932 dalam dua cara: Saya menempatkan titik yang menonjol pada setiap seri pada tahun 1932, dan menggambar garis abu-abu samar di plot di latar belakang di tingkat-tingkat tersebut.

masukkan deskripsi gambar di sini

gung - Reinstate Monica
sumber
+1 solusi yang sangat hebat
Repmat
2
Ada cukup ruang untuk kehilangan legenda (bunuh kunci) dan beri label setiap kurva langsung di dalam tubuh grafik.
Nick Cox
3
Ada banyak cara untuk membuat kode & plot lebih bagus. Poin utama saya di sini adalah untuk membedakan antara gagasan level & perubahan, & memberikan demonstrasi dasar tentang bagaimana perubahan dapat divisualisasikan.
gung - Reinstate Monica
17

Ada banyak ide bagus di sini dalam jawaban lain, tetapi mereka tidak menghabiskan solusi bagus yang mungkin. Grafik pertama dalam jawaban ini menyatakan bahwa berbagai tingkat kematian dapat didiskusikan dan dijelaskan secara terpisah. Dengan memungkinkan setiap seri mengisi banyak ruang yang tersedia, ini memusatkan perhatian pembaca pada pola perubahan relatif.

Urutan alfabetis menurut negara biasanya merupakan standar bodoh, dan tidak ditekankan di sini. Untungnya, dan untungnya, Jerman sebagai de berada di tengah layar 3 x 3 ini. Sebuah narasi sederhana - Lihat! Pola Jerman luar biasa dengan peningkatan dari tahun 1932 - dimungkinkan dan masuk akal.

masukkan deskripsi gambar di sini

Kebetulan, tapi untungnya, 9 negara cukup untuk membenarkan mencoba panel terpisah, tetapi tidak terlalu banyak untuk membuat desain itu tidak praktis (misalnya 30 dan 300 panel, mungkin ada terlalu banyak panel untuk dipindai, masing-masing terlalu kecil untuk melakukan itu). diteliti dengan cermat).

Jelas, ada banyak ruang di sini untuk nama negara yang lebih lengkap. (Dalam beberapa jawaban lain, legenda memakan sebagian besar dari ruang yang tersedia, namun tetap sedikit samar. Dalam praktiknya, orang-orang yang tertarik pada data semacam itu akan menemukan bahwa singkatan negara mudah untuk diterjemahkan, tetapi seberapa jauh legenda itu dibutuhkan sering kali merupakan masalah menjengkelkan dalam desain grafis.)

Kode stata untuk catatan:

clear
input int year double(de fr be nl den ch aut cz pl)
1927 10.9 16.5   13 10.2 11.6 12.4   15   16 17.3
1928 11.2 16.4 12.8  9.6   11   12 14.5 15.1 16.4
1929 11.4 17.9 14.4 10.7 11.2 12.5 14.6 15.5 16.7
1930 10.4 15.6 12.8  9.1 10.8 11.6 13.5 14.2 15.6
1931 10.4 16.2 12.7  9.6 11.4 12.1   14 14.4 15.5
1932 10.2 15.8 12.7    9   11 12.2 13.9 14.1   15
1933 10.8 15.8 12.7  8.8 10.6 11.4 13.2 13.7 14.2
1934 10.6 15.1 11.7  8.4 10.4 11.3 12.7 13.2 14.4
1935 11.4 15.7 12.3  8.7 11.1 12.1 13.7 13.5   14
1936 11.7 15.3 12.2  8.7   11 11.4 13.2 13.3 14.2
1937 11.5   15 12.5  8.8 10.8 11.3 13.3 13.3   14
end

rename (de-pl) (death=)
reshape long death, i(year) j(country) string
set scheme s1color 
line death year, by(country, yrescale note("")) xtitle("") xla(1927(5)1937)

SUNTING:

Salah satu peningkatan sederhana dari grafik ini yang disarankan oleh Tim Morris adalah untuk menyoroti tahun di mana maksimum terjadi:

masukkan deskripsi gambar di sini

egen max = max(death) , by(country)
replace max = max == death
twoway line death year || scatter death year if max, ms(O)  ///
by(country, yrescale note("") legend(off)) xtitle("") xla(1927(5)1937)  

EDIT 2 (direvisi untuk menunjukkan kode yang lebih sederhana):

Atau, desain berikutnya ini menunjukkan setiap seri secara terpisah, tetapi setiap kali dengan seri lainnya sebagai latar belakang. Ide umum dibahas dalam utas terkait ini .

masukkan deskripsi gambar di sini

Ada kerugian dan juga untung di sini. Sementara setiap seri dapat lebih mudah dilihat dalam konteks yang lain, ruang hilang oleh pengulangan.

Kode stata untuk catatan:

(Kode untuk input, reshape, renameseperti di atas dalam jawaban ini)

* type "ssc inst fabplot" to install
fabplot line death year, by(country, compact note("countries highlighted in turn")) ///
ytitle("death rate, yearly deaths per 1000") yla(8(2)18, ang(h)) ///
xla(1927(5)1937, format(%tyY)) xtitle("") front(connected) 

fabplotharus dipahami sebagai ront fatau foreground adan backdrop atau ackground bplot, bukan sebagai gema dari tahun 1960-an gaul untuk "luar biasa".

Nick Cox
sumber
3
+1, saya harus mengatakan, kode ini agak ringkas untuk menghasilkan plot yang bagus seperti itu.
gung - Reinstate Monica
@ung, terima kasih. Setiap pengakuan di sini layak oleh StataCorp karena ini adalah perintah bawaan. Secara kosmetik, saya men-zapping beberapa teks default, misalnya yearsebagai judul sumbu x (siapa yang butuh itu?). Saya akan menambahkan itu ke pengguna Stata struktur data alami akan menjadi yang tidak mewajibkan renamedan reshape. tetapi memiliki panel yang berbeda (di sini negara) sebagai blok pengamatan yang berbeda.
Nick Cox
+1 Namun, satu fitur bermasalah dari solusi ini adalah bahwa ia kehilangan konteks: kita tidak dapat dengan mudah melihat bahwa meskipun angka kematian Jerman telah meningkat, itu dimulai pada tingkat rendah dan masih (relatif) tidak terlalu tinggi pada akhirnya.
whuber
1
Desain alternatif dalam EDIT 2 adalah salah satu cara untuk mengatasi titik kunci yang dibuat oleh @whuber tentang konteks.
Nick Cox
15

Grafik Anda masuk akal, tetapi akan memerlukan beberapa penyempurnaan, termasuk judul, label sumbu, dan label negara lengkap. Jika tujuan Anda adalah untuk menekankan fakta bahwa Jerman adalah satu-satunya negara dengan kenaikan angka kematian selama periode pengamatan maka cara sederhana untuk melakukannya adalah dengan menyoroti garis ini di plot, baik dengan menggunakan garis yang lebih tebal, berbeda tipe garis, atau transparansi alfa. Anda juga bisa menambah plot deret waktu Anda dengan plot batang yang menunjukkan perubahan tingkat kematian dari waktu ke waktu, sehingga kompleksitas garis deret waktu dikurangi menjadi satu ukuran perubahan.

Berikut adalah bagaimana Anda dapat menghasilkan plot ini menggunakan ggplotdi R:

library(tidyr);
library(dplyr);
library(ggplot2);

#Create data frame in wide format
DATA_WIDE <- data.frame(Year = 1927L:1937L,
                        DE   = c(10.9, 11.2, 11.4, 10.4, 10.4, 10.2, 10.8, 10.6, 11.4, 11.7, 11.5),
                        FR   = c(16.5, 16.4, 17.9, 15.6, 16.2, 15.8, 15.8, 15.1, 15.7, 15.3, 15.0),
                        BE   = c(13.0, 12.8, 14.4, 12.8, 12.7, 12.7, 12.7, 11.7, 12.3, 12.2, 12.5),
                        NL   = c(10.2,  9.6, 10.7,  9.1,  9.6,  9.0,  8.8,  8.4,  8.7,  8.7,  8.8),
                        DEN  = c(11.6, 11.0, 11.2, 10.8, 11.4, 11.0, 10.6, 10.4, 11.1, 11.0, 10.8),
                        CH   = c(12.4, 12.0, 12.5, 11.6, 12.1, 12.2, 11.4, 11.3, 12.1, 11.4, 11.3),
                        AUT  = c(15.0, 14.5, 14.6, 13.5, 14.0, 13.9, 13.2, 12.7, 13.7, 13.2, 13.3),
                        CZ   = c(16.0, 15.1, 15.5, 14.2, 14.4, 14.1, 13.7, 13.3, 13.5, 13.3, 13.3),
                        PL   = c(17.3, 16.4, 16.7, 15.6, 15.5, 15.0, 14.2, 14.4, 14.0, 14.2, 14.0));

#Convert data to long format
DATA_LONG <- DATA_WIDE %>% gather(Country, Measurement, DE:PL);

#Set line-types and sizes for plot
#Germany (DE) is the fifth country in the plot
LINETYPE <- c("dashed", "dashed", "dashed", "dashed", "solid", "dashed", "dashed", "dashed", "dashed");
SIZE     <- c(1, 1, 1, 1, 2, 1, 1, 1, 1);

#Create time-series plot
theme_set(theme_bw());
PLOT1 <- ggplot(DATA_LONG, aes(x = Year, y = Measurement, colour = Country)) + 
         geom_line(aes(size = Country, linetype = Country)) +
         scale_size_manual(values = SIZE) +
         scale_linetype_manual(values = LINETYPE) +
         scale_x_continuous(breaks = 1927:1937) +
         scale_y_continuous(limits = c(0, 20)) +
         labs(title = "Annual Time Series Plot: Death Rates over Time", 
              subtitle = "Only Germany (DE) trends upward from 1927-37") +
         xlab("Year") + ylab("Crude Death Rate\n(per 1,000 population)");


#Create new data frame for differences
DATA_DIFF <- data.frame(Country = c("DE", "FR", "BE", "NL", "DEN", "CH", "AUT", "CZ", "PL"),
                        Change  = as.numeric(DATA_WIDE[11, 2:10] - DATA_WIDE[1, 2:10]));

#Create bar plot
PLOT2 <- ggplot(DATA_DIFF, aes(x = reorder(Country, - Change), y = Change, colour = Country, fill = Country)) + 
         geom_bar(stat = "identity") +
         labs(title = "Bar  Plot: Change in Death Rates from 1927-37", 
              subtitle = "Only Germany (DE) shows an increase in death rate") +
         xlab(NULL) + ylab("Change in crude Death Rate\n(per 1,000 population)");

Ini mengarah ke plot berikut:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Catatan: Saya sadar bahwa OP bermaksud menyoroti perubahan tingkat kematian sejak 1932, ketika tren di Jerman mulai naik. Bagi saya ini agak mirip dengan memetik ceri, dan saya merasa ragu ketika interval waktu dipilih untuk mendapatkan tren tertentu. Untuk alasan ini saya telah melihat interval pada seluruh rentang data, yang merupakan perbandingan yang berbeda dengan OP.

Pasang kembali Monica
sumber
Terima kasih atas saran Anda. Formatnya adalah pekerjaan yang sedang berlangsung, ini hanya contoh kasar dari apa yang ingin saya dapatkan;)
PhDing
1
@Graipher: Terlihat dengan baik (+1) - Saya akan mengedit ketika saya memiliki sedikit waktu lagi.
Pasang kembali Monica
1
Saya suka plot bar, tapi alih-alih abjad x-axis, saya urutkan berdasarkan perubahan.
Gregor
14

Meskipun tujuan yang dinyatakan adalah untuk menampilkan perubahan, tampaknya Anda juga ingin menampilkan rangkaian waktu tahunan menurut negara. Itu menunjukkan tidak sepenuhnya mengulang grafis, tetapi hanya memodifikasinya.

Karena perubahan menyangkut apa yang terjadi dari satu tahun ke tahun berikutnya, Anda dapat mempertimbangkan untuk mewakili perubahan dengan simbol grafis yang menjangkau tahun-tahun berikutnya: yaitu segmen garis yang menghubungkan titik data dalam plot.

Karena warna sangat berguna untuk membedakan negara, dan sebaliknya tidak begitu baik dalam menunjukkan variabel kuantitatif, yang membuat kita pada dasarnya hanya dua karakteristik lain yang dapat divariasikan untuk menunjukkan perubahan: gaya dan ketebalan segmen. Karena tesis Anda menyangkut perubahan positif, Anda ingin membuat segmen garis untuk peningkatan lebih menonjol: gaya mereka harus lebih berkelanjutan dan mereka harus lebih tebal.

Akhirnya, tesis Anda menyangkut data setelah 1932. Kami ingin menekankan elemen-elemen grafik relatif terhadap yang lain. Itu bisa dilakukan dengan menjenuhkan warna.

Merencanakan

Solusi ini segera memberikan wawasan yang tidak terlihat dalam aslinya:

  • Tidak ada negara yang mengalami peningkatan angka kematian tahunan untuk semua tahun setelah tahun 1932. Negara mana pun akan muncul sebagai garis solid yang berkelanjutan, tetapi tidak ada garis tersebut.

  • Banyak perubahan yang seharusnya dikaitkan dengan faktor-faktor yang umum di semua negara. Ini terlihat pada kesamaan gaya garis dan ketebalan dalam kolom vertikal. Misalnya, selama periode 1934-35 angka kematian meningkat di hampir semua negara, di mana pada 1933-34 mereka menurun di hampir semua negara.

  • Jerman tidak biasa dalam mengalami peningkatan besar angka kematian pada 1932-33 dan juga sedikit meningkat pada 1935-36.

Ini menunjukkan melakukan eksplorasi dua arah yang kuat dari perubahan dalam tingkat kematian versus negara, mungkin dengan median polish, untuk menembus lebih dalam ke kinerja relatif negara-negara Eropa selama periode ini.

Jika Anda hanya ingin menekankan perbedaan antara 1937 dan 1932, teknik serupa dapat digunakan untuk melambangkan bagian dari jalan di antara tanggal-tanggal tersebut. Jerman akan menonjol:

Plot 2

whuber
sumber
10

Slopegraphs

Salah satu cara Anda dapat menyajikan data Anda menggunakan slopegraph yang sangat baik untuk membandingkan perubahan atau gradien (beberapa tautan: 1 2 )

Dibawah ini

  • Di sebelah kiri contoh slopegraph yang menunjukkan bagaimana ini terlihat untuk kasus Anda.

  • Di tengah slopegraph yang lebih kompleks juga menunjukkan tahun 1932

  • Di sebelah kanan variasi slopegraph, lebih banyak semacam grafik mini, di mana semua data ditampilkan (artinya tidak ada garis lurus).

Saya tidak yakin yang mana yang terbaik. Opsi ketiga / kanan memberikan ide yang lebih kuat tentang variasi dari tahun ke tahun (dan misalnya menjadi lebih terlihat bahwa Danmark vs Jerman tidak terlihat begitu berbeda dan naik turun banyak dari tahun ke tahun) tetapi dapat juga mengganggu (terutama puncak 1929). Jadi yang mana yang lebih baik tergantung pada apa yang ingin Anda sampaikan dengan grafik dan berapa banyak detail yang dibutuhkan cerita Anda (mis. Sekitar tahun 1932 dengan pemerintah yang berbeda yang lebih jelas dalam opsi kedua / menengah).

Variasi dari slopegraph di sebelah kanan terlihat sangat mirip dengan grafik oleh Xan. Namun, selain perbedaan gaya ada satu lagi perbedaan penting. Lebar dan tinggi gambar dipilih sedemikian rupa sehingga sudut kurva mendekati 45 derajat. Dengan cara ini perbedaannya lebih menonjol (saya percaya bahwa contoh terbaik adalah contoh sunspot oleh Edward Tufte )

grafik kemiringan dan variasi

Lebih banyak konteks

Jika Anda ingin menambahkan lebih banyak kompleksitas daripada slopegraph sederhana, maka saya percaya sebenarnya lebih baik untuk menampilkan lebih banyak data di luar kisaran 1927-1937 daripada di dalam kisaran. (lagi-lagi sebuah contoh oleh Tufte dari halaman 74-75 dalam The Visual Display of Quantitive Information yang dapat Anda peroleh melalui halaman ini di papan buletin di situs webnya)

Contoh di bawah ini menunjukkan data untuk tahun 1900-2000 (tidak termasuk Polandia yang datanya agak sulit) diekstraksi dari wikipedia (misalnya halaman ini untuk Republik Ceko ) dan untuk Swiss dan Belanda biro statistik nasional mereka ( bfs dan Statline ).

(Data sedikit berbeda dari milik Anda tetapi sama seperti misalnya artikel "Autarki, disintegrasi pasar, dan kesehatan: Krisis kematian dan gizi di Jerman Nazi, 1933-1937" oleh Jörg Baten dan Andrea Wagner. Artikel ini menarik untuk membaca karena mereka menyediakan lebih banyak data daripada hanya angka kematian kasar, meskipun mereka juga membatasi diri mereka untuk periode kecil.Terutama yang menarik adalah bahwa kenaikan tingkat kematian, dari 1932 ke 1937, terutama ada di antara kota-kota di strip dari Frankfurt ke Bremen dan Hamburg)

lebih banyak konteks

Saya percaya bahwa grafik ini penting karena menunjukkan bahwa Jerman membuat penurunan yang sangat kuat sebelum kenaikan setelah 1932. Lebih kuat dari negara lain. Sehingga Anda dapat memiliki interpretasi negatif dan positif. Angka kematian Jerman meningkat lebih dari negara-negara lain antara 1932-1937, tetapi apakah ini (1) naik dari puncak yang rendah, atau (2) naik menuju puncak yang tinggi? Aspek yang menarik dalam hal ini adalah bahwa tingkat 10.8 1932 adalah tingkat yang sangat rendah untuk Jerman (pada titik ini hanya Belanda yang memiliki tingkat kematian yang lebih rendah). Ini bukan hanya level terendah untuk tahun-tahun hingga 1937, tetapi juga dibutuhkan hingga 1995 sebelum level 10.8 ini tercapai lagi.

Poin lain, terkait dengan kesehatan (jika ini adalah konteks Anda) mungkin lebih baik untuk membandingkan harapan hidup, komposisi demografis populasi memiliki pengaruh pada tingkat kematian, terlepas dari perubahan dalam situasi kesehatan

Konteks tambahan yang sedikit kurang

Grafik di atas menunjukkan totalitas tetapi mungkin berlebihan untuk sebagian besar tujuan (kecuali dalam posting ini di mana saya ingin menunjukkan seluruh sejarah dan lebih untuk tujuan eksplorasi). Grafik di bawah ini merupakan alternatif yang, saya percaya, masih layak.

grafik kontekstual yang lebih kecil

Sextus Empiricus
sumber
Terima kasih atas semua saran Anda. Saya pikir slopegraph yang Anda berikan sangat intuitif. Saya yakin bahwa memasukkan rentang waktu yang lebih lama akan berguna tetapi kami ingin membuat titik yang berfokus pada periode tertentu ini dan membuatnya lebih jelas. Saya pikir plot 1900-2000 akan menjadi agak terlalu berantakan. Mengenai poin terakhir Anda, kami menyesuaikan usia harga minyak mentah agar tetap menggunakan tingkat kematian.
Gelar Doktoral
1
@Alessandro Saya telah menambahkan alternatif yang lebih praktis. Sekali lagi angkanya berbeda karena saya menggunakan sumber yang berbeda (tidak disesuaikan usia) tetapi saya kira penurunan kuat Jerman diikuti dengan peningkatan kuat bisa sama.
Sextus Empiricus
4

Bergantung pada audiens, tetapi saya akan menyederhanakan hal-hal:

masukkan deskripsi gambar di sini

Lalu, ungkapkan dalam teks mis

Dari tahun 1932-1937, angka kematian tahunan meningkat di Jerman, sedangkan angka itu turun secara keseluruhan di seluruh Eropa tengah (Prancis, Belgia, Belanda, Denmark, Austria, Republik Ceko, Polandia).

(BTW apa ch vs cz yaitu negara mana yang saya lewatkan di atas?)

Untuk menjadi menyeluruh, Anda tentu saja perlu mempertimbangkan death rateperkiraan populasi saat 'mengumpulkan' ini untuk 'Lainnya', tetapi saya yakin informasi ini sudah tersedia untuk Anda.

Pembaruan 6/9/18: Ini tentu saja merupakan sketsa 'mainan' dan tidak berasal dari data; idenya adalah untuk memberikan draf kasar dari bentuk grafik yang harus diambil.

OyOi=1...88×

Oyi=i=8i=1ADRyi.populationitotalPopulation

atau lebih baik, jika Anda memiliki info populasi. untuk setiap tahun:

Oyi=i=8i=1ADRyi.populationyitotalPopulationy

Bergantung pada jumlah pembaca (mis. Ahli epidemiologi vs sejarawan) standar deviasi atau kesalahan standar dapat ditambahkan ke yang terakhir, meskipun saya pikir ini lebih akan merusak tampilan sederhana plot.

dardisco
sumber
5
chadalah Swiss. (Dan BTW, itu belum Republik Ceko di 30-an.) - Yang saya tidak suka tentang pendekatan Anda adalah bahwa tidak jelas bahwa tren penurunan konsisten melalui negara-negara lain. Mungkin tampak seolah-olah hanya ada fluktuasi acak yang terjadi rata-rata ke sesuatu yang negatif di negara lain, tetapi hasilnya positif di Jerman.
leftaroundtentang
Saya suka jawaban ini, tetapi saya dapat menambahkan visual kisaran atau standar deviasi di sekitar garis 'yang lain', jika tidak berarti bisa menipu.
Tasos Papastylianou
2
Saya sangat menyukai ide ini - tetapi bisakah Anda menjelaskan bagaimana Anda menentukan tingkat kematian "orang lain"? Sarana aritmatika dari angka mereka tidak akan sesuai karena populasi yang mereka wakili sangat bervariasi.
whuber
3

Jika Anda ingin menyoroti perubahan, maka mungkin hitung ini dan tampilkan itu. Menggunakan peta panas untuk menampilkan perubahan dapat bermanfaat karena memungkinkan perbandingan dibuat tanpa terlalu banyak masalah dan menghindari masalah interpolasi yang dapat berasal dari grafik garis.

Menggunakan data Anda seperti ddalam R:

library(tidyverse)
d2 <- data.frame(apply(d[-1],2,diff))
d2$year <- d$year[-1]
d2 %>% gather(key="country",value=deathrate,-year) %>% 
   ggplot(aes(x=factor(year),y=country,fill=deathrate)) + 
   geom_tile() + 
   scale_fill_gradient2("\u0394 deathrate")

peta panas deadrate

Perhatikan bahwa data sekarang berubah dari tahun sebelumnya. Anda dapat melihat bahwa Jerman memiliki sekelompok blues (peningkatan angka kematian) setelah 1932 yang tidak dimiliki negara lain. Anda juga dapat melihat bahwa antara tahun 1934 dan 1935 semua negara kecuali Polandia menyaksikan peningkatan angka kematian, tetapi tren bucking Jerman tampaknya adalah 1932-1933 dan 1935-1936 (serta 1927-1928).

Salah satu fitur yang menarik adalah kenyataan bahwa warna lebih intens di sebelah kiri dibandingkan ke kanan. Ini berarti bahwa besarnya perubahan lebih tinggi pada awal periode, dan lebih bisu menjelang akhir.

Saya akan merekomendasikan memasangkan ini dengan grafik garis yang menunjukkan level juga.

James
sumber
2

Di sini saya menunjukkan kepada Anda perbedaan logaritma rasio kematian per 1000 penduduk, sehubungan dengan tahun sebelumnya (oleh karena itu 1927 tidak diperlihatkan). Jerman ditampilkan dalam warna merah sementara rata-rata negara lain ditampilkan dalam garis hitam tebal.

masukkan deskripsi gambar di sini

Jerman mengalami peningkatan rasio dalam 5 dari 10 tahun. Setelah 1932 ia mengatakan di atas rata-rata negara lain (dan sebagian besar positif), hingga 1937.

Padahal mengapa logaritma? Alasannya sederhana: perubahan dari 2 ke 1 lebih drastis daripada perubahan dari 1000 menjadi 999 :)


Kode:

x = read.table("clipboard", header = TRUE, dec = ".")
xl = log(x[-1])
xd = apply(xl, 2L, diff)

png("CVquestion.png")
plot(0,0, xlim = range(x[-1,1]), ylim = range(xd), type = "n", ylab = "", main = "Difference of the log(death rate per 1000 inhab.)", xlab = "year")
grid()
for (i in rev(seq(ncol(xl)))) lines(x[-1,1], xd[,i], type = "o", col = adjustcolor(ifelse(i == 1, 2, 1), 0.7), lwd = ifelse(i == 1, 2, 1), lty = ifelse(i == 1, 1, 2), pch = ifelse(i == 1,16,NA))
lines(x[-1,1], rowMeans(xd[,-1]), type = "o", col = adjustcolor(1, 0.7), lwd = 2, lty = 1, pch = 16)

text(x = 1937, y = rev(xd[10,]), label = rev(colnames(xd)), col = rev(c(2, rep(1,8))))
dev.off()
Pembakar
sumber
2
OP berbicara tentang tingkat kematian bukan tingkat pembunuhan
kjetil b halvorsen
@kjetilbhalvorsen Ooops, itulah yang terjadi ketika Anda mencoba visualisasi data ater 9 pm dalam sehari Anda telah bekerja sejak jam 8 pagi haha. Akan memperbaiki SECEPATNYA, terima kasih untuk kepala :)
Firebug
1

Satu versi lagi: rasio (angka kematian rata-rata dari tahun 1927 hingga tahun ini) / (angka kematian 1927)

masukkan deskripsi gambar di sini

Dilakukan dengan kode Mathematica

data = {
 {year,   de,   fr,   be,   nl,  den,   ch,  aut,   cz,   pl},
 {1927, 10.9, 16.5, 13.0, 10.2, 11.6, 12.4, 15.0, 16.0, 17.3},
 {1928, 11.2, 16.4, 12.8,  9.6, 11.0, 12.0, 14.5, 15.1, 16.4},
 {1929, 11.4, 17.9, 14.4, 10.7, 11.2, 12.5, 14.6, 15.5, 16.7},
 {1930, 10.4, 15.6, 12.8,  9.1, 10.8, 11.6, 13.5, 14.2, 15.6},
 {1931, 10.4, 16.2, 12.7,  9.6, 11.4, 12.1, 14.0, 14.4, 15.5},
 {1932, 10.2, 15.8, 12.7,  9.0, 11.0, 12.2, 13.9, 14.1, 15.0},
 {1933, 10.8, 15.8, 12.7,  8.8, 10.6, 11.4, 13.2, 13.7, 14.2},
 {1934, 10.6, 15.1, 11.7,  8.4, 10.4, 11.3, 12.7, 13.2, 14.4},
 {1935, 11.4, 15.7, 12.3,  8.7, 11.1, 12.1, 13.7, 13.5, 14.0},
 {1936, 11.7, 15.3, 12.2,  8.7, 11.0, 11.4, 13.2, 13.3, 14.2},
 {1937, 11.5, 15.0, 12.5,  8.8, 10.8, 11.3, 13.3, 13.3, 14.0}
}

ListPlot[
 Map[
  Table[{First[data[[k + 1]]], Mean[Take[#, k]]/First[#]}, {k, Length[#]}] &,
  Map[Rest, Rest[Transpose[data]]]
 ],
 Joined -> True,
 PlotRange -> All,
 Frame -> True,
 FrameTicks -> {Map[First, Rest[data]], Automatic},
 PlotLabels -> Rest[First[data]],
 AxesOrigin -> {First[First[Rest[data]]], 1} 
]

(Puncak pada tahun 1929 tampaknya terkait dengan pandemi flu yang terjadi sekitar waktu itu)

მამუკა ჯიბლაძე
sumber