I used matplotlib to create a histogram. There are still problems I couldn't solve on my own or with the help of the internet.
How can I change the color of certain bins? In detail I want to change the color of bins with: a.) value bin < 1.15 red, b.) value 1.15 < bin < 1.25 c.) value > 1.25 red?
How can I label the X-Axis not only with numbers with 1 decimal but also with 2 decimals (right now simply not plotted)?
import matplotlib.pyplot as plt import numpy as np import csv thickness = [] #gets thickness from list bins = [1.00,1.01,1.02,1.03,1.04,1.05,1.06,1.07,1.08,1.09,1.10,1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,1.19,1.20,1.21,1.22,1.23,1.24,1.25,1.26,1.27,1.28,1.29,1.30,1.31,1.32,1.33,1.34,1.35,1.36,1.37,1.38,1.39,1.40,1.41,1.42,1.43,1.44,1.45,1.46,1.47,1.48,1.49,1.50 ] #set bins manuelly with open('control.txt','r') as csvfile: plots = csv.reader(csvfile, delimiter=',') for row in plots: #x.append(float(row[0])) thickness.append(float(row[1])) plt.hist(thickness, bins, align='left', histtype='bar', rwidth=0.8, color='green') plt.xlabel('thickness [mm]') plt.ylabel('frequency') plt.title('Histogram') plt.show()
See the plotted histogram below:
Something like this (there may be some bugs):
import matplotlib.pyplot as plt
import numpy as np
import csv
from matplotlib.ticker import FormatStrFormatter
thickness = [] #gets thickness from list
bins = [1.00,1.01,1.02,1.03,1.04,1.05,1.06,1.07,1.08,1.09,1.10,1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,1.19,1.20,1.21,1.22,1.23,1.24,1.25,1.26,1.27,1.28,1.29,1.30,1.31,1.32,1.33,1.34,1.35,1.36,1.37,1.38,1.39,1.40,1.41,1.42,1.43,1.44,1.45,1.46,1.47,1.48,1.49,1.50
] #set bins manuelly
with open('control.txt','r') as csvfile:
plots = csv.reader(csvfile, delimiter=',')
for row in plots:
#x.append(float(row[0]))
thickness.append(float(row[1]))
h,bins = plt.hist(thickness, bins)
plt.clf()
fig, ax = plt.subplots()
ax.bar(bins[bins<1.2],h[bins<1.2],rwidth=0.8, color='red')
plt.bar(bins[np.logical_and(bins>1.2,bins<1.5)],h[np.logical_and(bins>1.2,bins<1.5)],rwidth=0.8, color='green')
ax.bar(bins[bins>1.5],h[bins>1.5],rwidth=0.8, color='red')
ax.set_xlabel('thickness [mm]')
ax.set_ylabel('frequency')
ax.set_title('Histogram')
ax.yaxis.set_major_formatter(FormatStrFormatter('%.2f'))
plt.show()
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.