Difference in Treatment of Floats Between Plots and Bar Plots in Matplotlib - matplotlib

I have a working plot using the following code:
import datetime as dt
import matplotlib.dates as mdate
import matplotlib.pyplot as plt
x = ['2016-06-20 21:00:02.313000', '2016-06-20 21:15:01.855000', '2016-06-20 21:30:01.690000', '2016-06-20 21:45:01.882000', '2016-06-20 22:00:02.005000', '2016-06-20 22:15:01.730000', '2016-06-20 22:30:01.479000', '2016-06-20 22:45:01.638000', '2016-06-20 23:00:01.886000', '2016-06-20 23:15:01.682000', '2016-06-20 23:30:01.653000', '2016-06-20 23:45:01.690000', '2016-06-21 00:00:02.196000', '2016-06-21 00:15:01.658000', '2016-06-21 00:30:01.514000', '2016-06-21 00:45:01.542000', '2016-06-21 01:00:01.291000', '2016-06-21 01:15:01.551000', '2016-06-21 01:30:01.439000', '2016-06-21 01:45:01.543000', '2016-06-21 02:00:01.449000', '2016-06-21 02:15:01.589000', '2016-06-21 02:30:01.555000', '2016-06-21 02:45:01.076000', '2016-06-21 03:00:01.588000', '2016-06-21 03:15:01.429000', '2016-06-21 03:30:01.029000', '2016-06-21 03:45:01.358000', '2016-06-21 04:00:01.460000', '2016-06-21 04:15:01.528000', '2016-06-21 04:30:01.366000', '2016-06-21 04:45:01.078000', '2016-06-21 05:00:01.541000', '2016-06-21 05:15:01.351000', '2016-06-21 05:30:01.618000', '2016-06-21 05:45:01.283000', '2016-06-21 06:00:01.297000', '2016-06-21 06:15:01.226000', '2016-06-21 06:30:01.219000', '2016-06-21 06:45:01.401000', '2016-06-21 07:00:01.410000', '2016-06-21 07:15:01.129000', '2016-06-21 07:30:01.420000', '2016-06-21 07:45:00.885000', '2016-06-21 08:00:01.338000', '2016-06-21 08:15:01.178000', '2016-06-21 08:30:01.148000', '2016-06-21 08:45:01.112000', '2016-06-21 09:00:01.357000', '2016-06-21 09:15:01.150000', '2016-06-21 09:30:00.814000', '2016-06-21 09:45:02.252000', '2016-06-21 10:00:01.757000', '2016-06-21 10:15:02.180000', '2016-06-21 10:30:02.188000', '2016-06-21 10:45:01.477000', '2016-06-21 11:00:02.100000', '2016-06-21 11:15:01.983000', '2016-06-21 11:30:02.038000', '2016-06-21 11:45:01.841000', '2016-06-21 12:00:01.825000', '2016-06-21 12:15:01.551000', '2016-06-21 12:30:01.716000', '2016-06-21 12:45:01.791000', '2016-06-21 13:00:02.297000', '2016-06-21 13:15:01.880000', '2016-06-21 13:30:01.433000', '2016-06-21 13:45:01.469000', '2016-06-21 14:00:01.769000', '2016-06-21 14:15:01.742000', '2016-06-21 14:30:01.803000', '2016-06-21 14:45:01.462000', '2016-06-21 15:00:01.819000', '2016-06-21 15:15:01.680000', '2016-06-21 15:30:01.657000', '2016-06-21 15:45:01.480000', '2016-06-21 16:00:01.578000', '2016-06-21 16:15:01.198000', '2016-06-21 16:30:01.584000', '2016-06-21 16:45:01.823000', '2016-06-21 17:00:01.636000', '2016-06-21 17:15:01.599000', '2016-06-21 17:30:01.419000', '2016-06-21 17:45:01.600000', '2016-06-21 18:00:01.746000', '2016-06-21 18:15:01.463000', '2016-06-21 18:30:01.345000', '2016-06-21 18:45:01.680000', '2016-06-21 19:00:01.509000', '2016-06-21 19:15:01.489000', '2016-06-21 19:30:01.708000', '2016-06-21 19:45:01.223000', '2016-06-21 20:00:01.310000', '2016-06-21 20:15:01.288000', '2016-06-21 20:30:01.188000', '2016-06-21 20:45:01.190000', '2016-06-21 21:00:01.260000', '2016-06-21 21:15:01.250000', '2016-06-21 21:30:01.218000', '2016-06-21 21:45:01.212000', '2016-06-21 22:00:01.220000', '2016-06-21 22:15:00.912000', '2016-06-21 22:30:00.840000', '2016-06-21 22:45:01.031000', '2016-06-21 23:00:01.159000', '2016-06-21 23:15:01.037000', '2016-06-21 23:30:00.851000', '2016-06-21 23:45:01.312000', '2016-06-22 00:00:02.867000', '2016-06-22 00:15:02.093000', '2016-06-22 00:30:02.074000', '2016-06-22 00:45:01.943000', '2016-06-22 01:00:02.038000', '2016-06-22 01:15:02.057000', '2016-06-22 01:30:01.854000', '2016-06-22 01:45:02.364000', '2016-06-22 02:00:01.976000', '2016-06-22 02:15:01.887000', '2016-06-22 02:30:01.720000', '2016-06-22 02:45:01.736000', '2016-06-22 03:00:01.901000', '2016-06-22 03:15:01.872000', '2016-06-22 03:30:01.457000', '2016-06-22 03:45:01.524000', '2016-06-22 04:00:02.015000', '2016-06-22 04:15:01.838000', '2016-06-22 04:30:01.637000', '2016-06-22 04:45:01.730000', '2016-06-22 05:00:01.781000', '2016-06-22 05:15:01.999000', '2016-06-22 05:30:01.508000', '2016-06-22 05:45:01.532000', '2016-06-22 06:00:01.100000', '2016-06-22 06:15:01.263000', '2016-06-22 06:30:01.267000', '2016-06-22 06:45:01.611000', '2016-06-22 07:00:01.718000', '2016-06-22 07:15:01.512000', '2016-06-22 07:30:01.485000', '2016-06-22 07:45:01.618000', '2016-06-22 08:00:01.665000', '2016-06-22 08:15:01.347000', '2016-06-22 08:30:01.294000', '2016-06-22 08:45:01.345000', '2016-06-22 09:00:01.599000', '2016-06-22 09:15:01.481000', '2016-06-22 09:30:01.219000', '2016-06-22 09:45:01.099000', '2016-06-22 10:00:01.318000', '2016-06-22 10:15:00.792000', '2016-06-22 10:30:01.341000', '2016-06-22 10:45:01.680000', '2016-06-22 11:00:01.608000', '2016-06-22 11:15:01.496000', '2016-06-22 11:30:01.235000', '2016-06-22 11:45:01.428000', '2016-06-22 12:00:01.384000', '2016-06-22 12:15:01.136000', '2016-06-22 12:30:01.691000', '2016-06-22 12:45:01.247000', '2016-06-22 13:00:01.511000', '2016-06-22 13:15:00.956000', '2016-06-22 13:30:01.055000', '2016-06-22 13:45:01.042000', '2016-06-22 14:00:01.314000', '2016-06-22 14:15:01.211000', '2016-06-22 14:30:01.619000', '2016-06-22 14:45:01.990000', '2016-06-22 15:00:02.147000', '2016-06-22 15:15:01.906000', '2016-06-22 15:30:01.873000', '2016-06-22 15:45:02.065000', '2016-06-22 16:00:01.892000', '2016-06-22 16:15:01.823000', '2016-06-22 16:30:01.950000', '2016-06-22 16:45:01.871000', '2016-06-22 17:00:01.638000', '2016-06-22 17:15:01.664000', '2016-06-22 17:30:01.897000', '2016-06-22 17:45:01.862000', '2016-06-22 18:00:01.638000', '2016-06-22 18:15:01.700000', '2016-06-22 18:30:01.610000', '2016-06-22 18:45:01.589000', '2016-06-22 19:00:01.876000', '2016-06-22 19:15:01.849000', '2016-06-22 19:30:02.241000', '2016-06-22 19:45:01.752000', '2016-06-22 20:00:01.305000', '2016-06-22 20:15:01.584000', '2016-06-22 20:30:01.479000', '2016-06-22 20:45:01.448000', '2016-06-22 21:00:01.714000', '2016-06-22 21:15:01.626000', '2016-06-22 21:30:01.545000', '2016-06-22 21:45:01.426000', '2016-06-22 22:00:01.656000', '2016-06-22 22:15:01.653000', '2016-06-22 22:30:01.396000', '2016-06-22 22:45:01.529000', '2016-06-22 23:00:01.463000', '2016-06-22 23:15:00.991000', '2016-06-22 23:30:01.371000', '2016-06-22 23:45:01.804000', '2016-06-23 00:00:02.017000', '2016-06-23 00:15:01.199000', '2016-06-23 00:30:01.319000', '2016-06-23 00:45:01.383000', '2016-06-23 01:00:01.298000', '2016-06-23 01:15:01.327000', '2016-06-23 01:30:01.576000', '2016-06-23 01:45:01.166000', '2016-06-23 02:00:01.206000', '2016-06-23 02:15:01.202000', '2016-06-23 02:30:01.172000', '2016-06-23 02:45:01.088000', '2016-06-23 03:00:01.239000', '2016-06-23 03:15:01.062000', '2016-06-23 03:30:00.924000', '2016-06-23 03:45:01.009000', '2016-06-23 04:00:00.732000', '2016-06-23 04:15:01.003000', '2016-06-23 04:30:01.136000', '2016-06-23 04:45:02.176000', '2016-06-23 05:00:02.134000', '2016-06-23 05:15:02.031000', '2016-06-23 05:30:01.832000', '2016-06-23 05:45:02.024000', '2016-06-23 06:00:02.323000', '2016-06-23 06:15:02.567000', '2016-06-23 06:30:02.139000', '2016-06-23 06:45:01.507000', '2016-06-23 07:15:01.507000', '2016-06-23 07:30:01.896000', '2016-06-23 07:45:01.886000', '2016-06-23 08:00:01.877000', '2016-06-23 08:15:01.806000', '2016-06-23 08:30:02.031000', '2016-06-23 08:45:01.692000', '2016-06-23 09:00:02.013000', '2016-06-23 09:15:01.888000', '2016-06-23 09:30:01.843000', '2016-06-23 09:45:01.733000', '2016-06-23 10:00:03.221000', '2016-06-23 10:15:01.600000', '2016-06-23 10:30:01.751000', '2016-06-23 10:45:01.262000', '2016-06-23 11:00:01.942000', '2016-06-23 11:15:01.619000', '2016-06-23 11:30:01.574000', '2016-06-23 11:45:01.471000', '2016-06-23 12:00:01.638000', '2016-06-23 12:15:01.490000', '2016-06-23 12:30:01.296000', '2016-06-23 12:45:01.407000', '2016-06-23 13:00:01.690000', '2016-06-23 13:15:01.665000', '2016-06-23 13:30:01.470000', '2016-06-23 13:45:00.896000', '2016-06-23 14:00:01.407000', '2016-06-23 14:15:01.305000', '2016-06-23 14:30:01.342000', '2016-06-23 14:45:01.020000', '2016-06-23 15:00:01.278000', '2016-06-23 15:15:01.257000', '2016-06-23 15:30:01.489000', '2016-06-23 15:45:01.160000', '2016-06-23 16:00:01.278000', '2016-06-23 16:15:01.228000', '2016-06-23 16:30:01.347000', '2016-06-23 16:45:01.477000', '2016-06-23 17:00:01.295000', '2016-06-23 17:15:01.093000', '2016-06-23 17:30:01.524000', '2016-06-23 17:45:01.216000', '2016-06-23 18:00:01.129000', '2016-06-23 18:15:01.251000', '2016-06-23 18:30:01.524000', '2016-06-23 18:45:01.057000', '2016-06-23 19:00:00.575000', '2016-06-23 19:15:02.286000', '2016-06-23 19:30:02.305000', '2016-06-23 19:45:01.905000', '2016-06-23 20:00:02.355000', '2016-06-23 20:15:01.615000', '2016-06-23 20:30:01.801000', '2016-06-23 20:45:01.946000', '2016-06-23 21:00:02.196000', '2016-06-23 21:15:01.927000', '2016-06-23 21:30:01.561000', '2016-06-23 21:45:01.830000', '2016-06-23 22:00:01.954000', '2016-06-23 22:15:01.548000', '2016-06-23 22:30:01.778000', '2016-06-23 22:45:01.536000', '2016-06-23 23:00:01.802000', '2016-06-23 23:15:01.827000', '2016-06-23 23:30:01.265000', '2016-06-23 23:45:01.953000', '2016-06-24 00:00:02.483000', '2016-06-24 00:15:01.594000', '2016-06-24 00:30:01.616000', '2016-06-24 00:45:01.727000', '2016-06-24 01:00:01.853000', '2016-06-24 01:15:01.645000', '2016-06-24 01:30:01.653000', '2016-06-24 01:45:01.201000', '2016-06-24 02:00:01.230000', '2016-06-24 02:15:01.400000', '2016-06-24 02:30:01.477000', '2016-06-24 02:45:01.649000', '2016-06-24 03:00:01.582000', '2016-06-24 03:15:01.481000', '2016-06-24 03:30:01.397000', '2016-06-24 03:45:01.272000', '2016-06-24 04:00:01.487000', '2016-06-24 04:15:01.429000', '2016-06-24 04:30:01.328000', '2016-06-24 04:45:01.348000', '2016-06-24 05:00:01.393000', '2016-06-24 05:15:00.969000', '2016-06-24 05:30:01.529000', '2016-06-24 05:45:00.857000', '2016-06-24 06:00:01.117000', '2016-06-24 06:15:01.230000', '2016-06-24 06:30:01.378000', '2016-06-24 06:45:00.877000', '2016-06-24 07:00:01.310000', '2016-06-24 07:15:01.167000']
y = ['29.99', '30', '30', '29.99', '30', '30.02', '30.02', '30.03', '30.04', '30.05', '30.06', '30.06', '30.06', '30.05', '30.05', '30.05', '30.05', '30.05', '30.05', '30.05', '30.04', '30.04', '30.04', '30.04', '30.04', '30.04', '30.04', '30.04', '30.04', '30.03', '30.03', '30.03', '30.03', '30.03', '30.03', '30.03', '30.04', '30.04', '30.04', '30.04', '30.04', '30.04', '30.04', '30.04', '30.05', '30.05', '30.05', '30.05', '30.05', '30.04', '30.04', '30.05', '30.05', '30.05', '30.04', '30.04', '30.04', '30.04', '30.04', '30.04', '30.04', '30.04', '30.04', '30.03', '30.03', '30.02', '30.02', '30.01', '30.01', '30.01', '30', '29.99', '29.99', '29.98', '29.98', '29.97', '29.97', '29.96', '29.96', '29.96', '29.95', '29.94', '29.94', '29.94', '29.93', '29.92', '29.92', '29.92', '29.92', '29.92', '29.92', '29.92', '29.92', '29.93', '29.93', '29.93', '29.93', '29.93', '29.93', '29.94', '29.94', '29.94', '29.94', '29.94', '29.94', '29.94', '29.94', '29.94', '29.95', '29.95', '29.95', '29.95', '29.94', '29.94', '29.94', '29.94', '29.93', '29.92', '29.9', '29.9', '29.91', '29.93', '29.95', '29.95', '29.96', '29.95', '29.94', '29.94', '29.96', '29.96', '29.96', '29.95', '29.95', '29.99', '29.99', '29.97', '29.97', '30', '29.99', '29.99', '29.99', '29.98', '29.92', '29.9', '29.9', '29.89', '29.91', '29.91', '29.91', '29.92', '29.92', '29.92', '29.92', '29.96', '29.99', '30.04', '30.04', '30.02', '29.89', '29.89', '29.89', '29.89', '29.91', '29.9', '29.91', '29.91', '29.91', '29.89', '29.89', '29.89', '29.89', '29.89', '29.88', '29.88', '29.88', '29.87', '29.87', '29.86', '29.86', '29.86', '29.84', '29.83', '29.83', '29.82', '29.82', '29.8', '29.8', '29.78', '29.76', '29.77', '29.77', '29.75', '29.74', '29.74', '29.73', '29.73', '29.76', '29.83', '29.82', '29.82', '29.79', '29.78', '29.76', '29.76', '29.76', '29.78', '29.77', '29.77', '29.78', '29.78', '29.78', '29.78', '29.78', '29.75', '29.77', '29.77', '29.77', '29.77', '29.78', '29.79', '29.79', '29.79', '29.79', '29.79', '29.79', '29.8', '29.8', '29.8', '29.8', '29.81', '29.81', '29.81', '29.82', '29.82', '29.83', '29.83', '29.84', '29.84', '29.85', '29.85', '29.86', '29.87', '29.87', '29.87', '29.87', '29.87', '29.87', '29.88', '29.88', '29.88', '29.88', '29.88', '29.89', '29.89', '29.89', '29.89', '29.89', '29.89', '29.89', '29.89', '29.89', '29.89', '29.89', '29.9', '29.9', '29.9', '29.9', '29.9', '29.89', '29.89', '29.89', '29.89', '29.89', '29.89', '29.9', '29.89', '29.89', '29.89', '29.89', '29.9', '29.9', '29.9', '29.9', '29.92', '29.92', '29.92', '29.92', '29.92', '29.94', '29.94', '29.94', '29.95', '29.95', '29.96', '29.96', '29.97', '29.97', '29.98', '29.98', '29.98', '29.99', '29.99', '29.99', '30.0', '30.0', '30.0', '30.0', '30.0', '30.0', '30.0', '30.0', '30.0', '30.0', '29.99', '29.99', '29.99', '29.99', '29.99', '29.99', '29.99', '30.01', '30.01', '30.02', '30.02', '30.03', '30.03', '30.04', '30.04', '30.04']
list_of_dates = [dt.datetime.strptime(obs, '%Y-%m-%d %H:%M:%S.%f') for obs in x]
dates_to_plot = mdate.date2num(list_of_dates)
fig1 = plt.figure(1, figsize=(7, 3))
ax = fig1.add_subplot(111)
ax.plot(dates_to_plot, y)
ax.xaxis.set_major_formatter(mdate.DateFormatter('%a'))
plt.show()
But when I change ax.plot to ax.bar, Matplotlib throws an error saying:
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/matplotlib/transforms.py:745:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
I realize that converting the y obs to floats will clear the error, I'm just curious why (all else equal) ax.plot can handle the data as strings but ax.bar can not.
EDIT: This question applies to what would now be considered very old and outdated versions of Matplotlib and Python.

Related

Out of memory error when adding comboboxes to userForm

I have a MS Word document which has vba macro. I have too many comboboxes in my userform. After a point i can not add a new comboboxes. When I click to view code button, it gives me out of memory error. I'm adding my userForm to below.
My vba codes are like this
Private Sub UserForm_Activate()
hpcStage4
End Sub
Private Sub hpcStage4()
Me.cmbHPC4_1.List = Array("Serviceable", "Unserviceable", "N/A per WS")
Me.cmbHPC4_2.List = Array("Serviceable", "Unserviceable", "N/A per WS")
Me.cmbHPC4_3.List = Array("Serviceable", "Unserviceable", "N/A per WS")
Me.cmbHPC4_4.List = Array("Serviceable", "Unserviceable", "N/A per WS")
Me.cmbHPC4_5.List = Array("Serviceable", "Unserviceable", "N/A per WS")
Me.cmbHPC4_6.List = Array("Serviceable", "Unserviceable", "N/A per WS")
Me.cmbHPC4_7.List = Array("Serviceable", "Unserviceable", "N/A per WS")
Me.cmbHPC4_8.List = Array("Serviceable", "Unserviceable", "N/A per WS")
Me.cmbHPC4_9.List = Array("Serviceable", "Unserviceable", "N/A per WS")
Me.cmbHPC4_10.List = Array("Serviceable", "Unserviceable", "N/A per WS")
Me.cmbHPC4_11.List = Array("Dent", "Nick", "Coating Damage", "Organic Redidues", "Dirt", "Trace", "Deposits", "Mineral Deposits", "Superficial Imperfection", "Scratch", "Scored", "Crack", "Axial Crack", "Radial Crack", "Circumferencial Crack", "Chordwise Crack", "Tip Connected Radial Crack", "Connected Loop Crack", "Full Crack", "Multi Cracks", "Tight Crack", "Burn", "Edge Burnback", "Burn Hole", "LE Burn Hole", "Burn Through Hole", "Burn Through", "Corrosion", "Discoloration", "Oxidation", "Sulphidation", "Erosion", "Blistering", "Pitting", "Peeling", "Ceramic Coating Detachment", "Missing Thermal Barrier Coating", "Tip rub", "Burr", "Curled", "Tip Curled", "Tip Corner Curled", "Missing Tip Corner", "Overlap", "Shingling", "Unlatching", "Out Of Flush", "Missing Material", "Missing Piece", "Chipped", "Flaking", "Lift Up", "Bulging", "Spalled", "Bent", "Distortion", "Tear", "Torn", "Wear", "Worn", "Plugged Air Slot", "Damper Wire Extrusion")
Me.cmbHPC4_12.List = Array("Dent", "Nick", "Coating Damage", "Organic Redidues", "Dirt", "Trace", "Deposits", "Mineral Deposits", "Superficial Imperfection", "Scratch", "Scored", "Crack", "Axial Crack", "Radial Crack", "Circumferencial Crack", "Chordwise Crack", "Tip Connected Radial Crack", "Connected Loop Crack", "Full Crack", "Multi Cracks", "Tight Crack", "Burn", "Edge Burnback", "Burn Hole", "LE Burn Hole", "Burn Through Hole", "Burn Through", "Corrosion", "Discoloration", "Oxidation", "Sulphidation", "Erosion", "Blistering", "Pitting", "Peeling", "Ceramic Coating Detachment", "Missing Thermal Barrier Coating", "Tip rub", "Burr", "Curled", "Tip Curled", "Tip Corner Curled", "Missing Tip Corner", "Overlap", "Shingling", "Unlatching", "Out Of Flush", "Missing Material", "Missing Piece", "Chipped", "Flaking", "Lift Up", "Bulging", "Spalled", "Bent", "Distortion", "Tear", "Torn", "Wear", "Worn", "Plugged Air Slot", "Damper Wire Extrusion")
Me.cmbHPC4_13.List = Array("Dent", "Nick", "Coating Damage", "Organic Redidues", "Dirt", "Trace", "Deposits", "Mineral Deposits", "Superficial Imperfection", "Scratch", "Scored", "Crack", "Axial Crack", "Radial Crack", "Circumferencial Crack", "Chordwise Crack", "Tip Connected Radial Crack", "Connected Loop Crack", "Full Crack", "Multi Cracks", "Tight Crack", "Burn", "Edge Burnback", "Burn Hole", "LE Burn Hole", "Burn Through Hole", "Burn Through", "Corrosion", "Discoloration", "Oxidation", "Sulphidation", "Erosion", "Blistering", "Pitting", "Peeling", "Ceramic Coating Detachment", "Missing Thermal Barrier Coating", "Tip rub", "Burr", "Curled", "Tip Curled", "Tip Corner Curled", "Missing Tip Corner", "Overlap", "Shingling", "Unlatching", "Out Of Flush", "Missing Material", "Missing Piece", "Chipped", "Flaking", "Lift Up", "Bulging", "Spalled", "Bent", "Distortion", "Tear", "Torn", "Wear", "Worn", "Plugged Air Slot", "Damper Wire Extrusion")
Me.cmbHPC4_14.List = Array("Dent", "Nick", "Coating Damage", "Organic Redidues", "Dirt", "Trace", "Deposits", "Mineral Deposits", "Superficial Imperfection", "Scratch", "Scored", "Crack", "Axial Crack", "Radial Crack", "Circumferencial Crack", "Chordwise Crack", "Tip Connected Radial Crack", "Connected Loop Crack", "Full Crack", "Multi Cracks", "Tight Crack", "Burn", "Edge Burnback", "Burn Hole", "LE Burn Hole", "Burn Through Hole", "Burn Through", "Corrosion", "Discoloration", "Oxidation", "Sulphidation", "Erosion", "Blistering", "Pitting", "Peeling", "Ceramic Coating Detachment", "Missing Thermal Barrier Coating", "Tip rub", "Burr", "Curled", "Tip Curled", "Tip Corner Curled", "Missing Tip Corner", "Overlap", "Shingling", "Unlatching", "Out Of Flush", "Missing Material", "Missing Piece", "Chipped", "Flaking", "Lift Up", "Bulging", "Spalled", "Bent", "Distortion", "Tear", "Torn", "Wear", "Worn", "Plugged Air Slot", "Damper Wire Extrusion")
Me.cmbHPC4_15.List = Array("Dent", "Nick", "Coating Damage", "Organic Redidues", "Dirt", "Trace", "Deposits", "Mineral Deposits", "Superficial Imperfection", "Scratch", "Scored", "Crack", "Axial Crack", "Radial Crack", "Circumferencial Crack", "Chordwise Crack", "Tip Connected Radial Crack", "Connected Loop Crack", "Full Crack", "Multi Cracks", "Tight Crack", "Burn", "Edge Burnback", "Burn Hole", "LE Burn Hole", "Burn Through Hole", "Burn Through", "Corrosion", "Discoloration", "Oxidation", "Sulphidation", "Erosion", "Blistering", "Pitting", "Peeling", "Ceramic Coating Detachment", "Missing Thermal Barrier Coating", "Tip rub", "Burr", "Curled", "Tip Curled", "Tip Corner Curled", "Missing Tip Corner", "Overlap", "Shingling", "Unlatching", "Out Of Flush", "Missing Material", "Missing Piece", "Chipped", "Flaking", "Lift Up", "Bulging", "Spalled", "Bent", "Distortion", "Tear", "Torn", "Wear", "Worn", "Plugged Air Slot", "Damper Wire Extrusion")
Me.cmbHPC4_16.List = Array("Dent", "Nick", "Coating Damage", "Organic Redidues", "Dirt", "Trace", "Deposits", "Mineral Deposits", "Superficial Imperfection", "Scratch", "Scored", "Crack", "Axial Crack", "Radial Crack", "Circumferencial Crack", "Chordwise Crack", "Tip Connected Radial Crack", "Connected Loop Crack", "Full Crack", "Multi Cracks", "Tight Crack", "Burn", "Edge Burnback", "Burn Hole", "LE Burn Hole", "Burn Through Hole", "Burn Through", "Corrosion", "Discoloration", "Oxidation", "Sulphidation", "Erosion", "Blistering", "Pitting", "Peeling", "Ceramic Coating Detachment", "Missing Thermal Barrier Coating", "Tip rub", "Burr", "Curled", "Tip Curled", "Tip Corner Curled", "Missing Tip Corner", "Overlap", "Shingling", "Unlatching", "Out Of Flush", "Missing Material", "Missing Piece", "Chipped", "Flaking", "Lift Up", "Bulging", "Spalled", "Bent", "Distortion", "Tear", "Torn", "Wear", "Worn", "Plugged Air Slot", "Damper Wire Extrusion")
Me.cmbHPC4_17.List = Array("Dent", "Nick", "Coating Damage", "Organic Redidues", "Dirt", "Trace", "Deposits", "Mineral Deposits", "Superficial Imperfection", "Scratch", "Scored", "Crack", "Axial Crack", "Radial Crack", "Circumferencial Crack", "Chordwise Crack", "Tip Connected Radial Crack", "Connected Loop Crack", "Full Crack", "Multi Cracks", "Tight Crack", "Burn", "Edge Burnback", "Burn Hole", "LE Burn Hole", "Burn Through Hole", "Burn Through", "Corrosion", "Discoloration", "Oxidation", "Sulphidation", "Erosion", "Blistering", "Pitting", "Peeling", "Ceramic Coating Detachment", "Missing Thermal Barrier Coating", "Tip rub", "Burr", "Curled", "Tip Curled", "Tip Corner Curled", "Missing Tip Corner", "Overlap", "Shingling", "Unlatching", "Out Of Flush", "Missing Material", "Missing Piece", "Chipped", "Flaking", "Lift Up", "Bulging", "Spalled", "Bent", "Distortion", "Tear", "Torn", "Wear", "Worn", "Plugged Air Slot", "Damper Wire Extrusion")
Me.cmbHPC4_18.List = Array("Dent", "Nick", "Coating Damage", "Organic Redidues", "Dirt", "Trace", "Deposits", "Mineral Deposits", "Superficial Imperfection", "Scratch", "Scored", "Crack", "Axial Crack", "Radial Crack", "Circumferencial Crack", "Chordwise Crack", "Tip Connected Radial Crack", "Connected Loop Crack", "Full Crack", "Multi Cracks", "Tight Crack", "Burn", "Edge Burnback", "Burn Hole", "LE Burn Hole", "Burn Through Hole", "Burn Through", "Corrosion", "Discoloration", "Oxidation", "Sulphidation", "Erosion", "Blistering", "Pitting", "Peeling", "Ceramic Coating Detachment", "Missing Thermal Barrier Coating", "Tip rub", "Burr", "Curled", "Tip Curled", "Tip Corner Curled", "Missing Tip Corner", "Overlap", "Shingling", "Unlatching", "Out Of Flush", "Missing Material", "Missing Piece", "Chipped", "Flaking", "Lift Up", "Bulging", "Spalled", "Bent", "Distortion", "Tear", "Torn", "Wear", "Worn", "Plugged Air Slot", "Damper Wire Extrusion")
Me.cmbHPC4_19.List = Array("Dent", "Nick", "Coating Damage", "Organic Redidues", "Dirt", "Trace", "Deposits", "Mineral Deposits", "Superficial Imperfection", "Scratch", "Scored", "Crack", "Axial Crack", "Radial Crack", "Circumferencial Crack", "Chordwise Crack", "Tip Connected Radial Crack", "Connected Loop Crack", "Full Crack", "Multi Cracks", "Tight Crack", "Burn", "Edge Burnback", "Burn Hole", "LE Burn Hole", "Burn Through Hole", "Burn Through", "Corrosion", "Discoloration", "Oxidation", "Sulphidation", "Erosion", "Blistering", "Pitting", "Peeling", "Ceramic Coating Detachment", "Missing Thermal Barrier Coating", "Tip rub", "Burr", "Curled", "Tip Curled", "Tip Corner Curled", "Missing Tip Corner", "Overlap", "Shingling", "Unlatching", "Out Of Flush", "Missing Material", "Missing Piece", "Chipped", "Flaking", "Lift Up", "Bulging", "Spalled", "Bent", "Distortion", "Tear", "Torn", "Wear", "Worn", "Plugged Air Slot", "Damper Wire Extrusion")
Me.cmbHPC4_20.List = Array("Dent", "Nick", "Coating Damage", "Organic Redidues", "Dirt", "Trace", "Deposits", "Mineral Deposits", "Superficial Imperfection", "Scratch", "Scored", "Crack", "Axial Crack", "Radial Crack", "Circumferencial Crack", "Chordwise Crack", "Tip Connected Radial Crack", "Connected Loop Crack", "Full Crack", "Multi Cracks", "Tight Crack", "Burn", "Edge Burnback", "Burn Hole", "LE Burn Hole", "Burn Through Hole", "Burn Through", "Corrosion", "Discoloration", "Oxidation", "Sulphidation", "Erosion", "Blistering", "Pitting", "Peeling", "Ceramic Coating Detachment", "Missing Thermal Barrier Coating", "Tip rub", "Burr", "Curled", "Tip Curled", "Tip Corner Curled", "Missing Tip Corner", "Overlap", "Shingling", "Unlatching", "Out Of Flush", "Missing Material", "Missing Piece", "Chipped", "Flaking", "Lift Up", "Bulging", "Spalled", "Bent", "Distortion", "Tear", "Torn", "Wear", "Worn", "Plugged Air Slot", "Damper Wire Extrusion")
Me.cmbHPC4_21.List = Array("EM TASK 72-00-00-200-002-B00", "AMM 72-00-00-200-016-B", "AMM 72-00-00-200-016-B01")
Me.cmbHPC4_22.List = Array("EM TASK 72-00-00-200-002-B00", "AMM 72-00-00-200-016-B", "AMM 72-00-00-200-016-B01")
Me.cmbHPC4_23.List = Array("EM TASK 72-00-00-200-002-B00", "AMM 72-00-00-200-016-B", "AMM 72-00-00-200-016-B01")
Me.cmbHPC4_24.List = Array("EM TASK 72-00-00-200-002-B00", "AMM 72-00-00-200-016-B", "AMM 72-00-00-200-016-B01")
Me.cmbHPC4_25.List = Array("EM TASK 72-00-00-200-002-B00", "AMM 72-00-00-200-016-B", "AMM 72-00-00-200-016-B01")
Me.cmbHPC4_26.List = Array("EM TASK 72-00-00-200-002-B00", "AMM 72-00-00-200-016-B", "AMM 72-00-00-200-016-B01")
Me.cmbHPC4_27.List = Array("EM TASK 72-00-00-200-002-B00", "AMM 72-00-00-200-016-B", "AMM 72-00-00-200-016-B01")
Me.cmbHPC4_28.List = Array("EM TASK 72-00-00-200-002-B00", "AMM 72-00-00-200-016-B", "AMM 72-00-00-200-016-B01")
Me.cmbHPC4_29.List = Array("EM TASK 72-00-00-200-002-B00", "AMM 72-00-00-200-016-B", "AMM 72-00-00-200-016-B01")
Me.cmbHPC4_30.List = Array("EM TASK 72-00-00-200-002-B00", "AMM 72-00-00-200-016-B", "AMM 72-00-00-200-016-B01")
End Sub
What can be cause this issue?

Modify Word Document Multilevel list to include all depth

I have a word document that has a 4 level deep multilevel list. I would like to modify the list styles (temporarily) to show the entire depth of the numbers. For instance, rather than just showing (iii), I want to modify it to show 1.1(a)(iii). I have seen instructions of attaching the style to the list, but I'm not sure how to write the style to show what I want.
So, all of the searching and the replies have not resulted in a working solution, yet, but I did discover that the .docx file is a zipped collection of xml files. So, after looking inside the docx file and the numbering.xml sub-file, I found the following section that seems to define the style for the numbering I am looking to change:
<w:abstractNum w:abstractNumId="93" w15:restartNumberingAfterBreak="0">
<w:nsid w:val="5FE75E67"/>
<w:multiLevelType w:val="multilevel"/>
<w:tmpl w:val="9C366D9C"/>
<w:lvl w:ilvl="0">
<w:start w:val="1"/>
<w:numFmt w:val="decimal"/>
<w:pStyle w:val="ArticleCL1"/>
<w:lvlText w:val="%1"/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:tabs>
<w:tab w:val="num" w:pos="720"/>
</w:tabs>
<w:ind w:left="0" w:firstLine="0"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Times New Roman"/>
<w:b/>
<w:i w:val="0"/>
<w:caps/>
<w:smallCaps w:val="0"/>
<w:sz w:val="22"/>
<w:u w:val="none"/>
</w:rPr>
</w:lvl>
<w:lvl w:ilvl="1">
<w:start w:val="1"/>
<w:numFmt w:val="decimal"/>
<w:pStyle w:val="ArticleCL2"/>
<w:lvlText w:val="%1.%2"/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:tabs>
<w:tab w:val="num" w:pos="720"/>
</w:tabs>
<w:ind w:left="720" w:hanging="720"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Times New Roman"/>
<w:b w:val="0"/>
<w:i w:val="0"/>
<w:caps w:val="0"/>
<w:sz w:val="22"/>
<w:u w:val="none"/>
</w:rPr>
</w:lvl>
<w:lvl w:ilvl="2">
<w:start w:val="1"/>
<w:numFmt w:val="lowerLetter"/>
<w:pStyle w:val="ArticleCL3"/>
<w:lvlText w:val="(%3)"/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:tabs>
<w:tab w:val="num" w:pos="720"/>
</w:tabs>
<w:ind w:left="720" w:hanging="720"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Times New Roman"/>
<w:b w:val="0"/>
<w:i w:val="0"/>
<w:caps w:val="0"/>
<w:sz w:val="22"/>
<w:u w:val="none"/>
</w:rPr>
</w:lvl>
<w:lvl w:ilvl="3">
<w:start w:val="1"/>
<w:numFmt w:val="lowerRoman"/>
<w:pStyle w:val="ArticleCL4"/>
<w:lvlText w:val="(%4)"/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:tabs>
<w:tab w:val="num" w:pos="1440"/>
</w:tabs>
<w:ind w:left="1440" w:hanging="720"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Times New Roman"/>
<w:b w:val="0"/>
<w:i w:val="0"/>
<w:caps w:val="0"/>
<w:sz w:val="22"/>
<w:u w:val="none"/>
</w:rPr>
</w:lvl>
<w:lvl w:ilvl="4">
<w:start w:val="1"/>
<w:numFmt w:val="lowerLetter"/>
<w:pStyle w:val="ArticleCL5"/>
<w:lvlText w:val="%5."/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:tabs>
<w:tab w:val="num" w:pos="2160"/>
</w:tabs>
<w:ind w:left="2160" w:hanging="720"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Times New Roman"/>
<w:b w:val="0"/>
<w:i w:val="0"/>
<w:caps w:val="0"/>
<w:sz w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:lvl>
<w:lvl w:ilvl="5">
<w:start w:val="1"/>
<w:numFmt w:val="decimal"/>
<w:pStyle w:val="ArticleCL6"/>
<w:lvlText w:val="%6."/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:tabs>
<w:tab w:val="num" w:pos="2160"/>
</w:tabs>
<w:ind w:left="2160" w:hanging="720"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Times New Roman" w:hint="default"/>
<w:b w:val="0"/>
<w:i w:val="0"/>
<w:caps w:val="0"/>
<w:sz w:val="22"/>
<w:u w:val="none"/>
</w:rPr>
</w:lvl>
<w:lvl w:ilvl="6">
<w:start w:val="1"/>
<w:numFmt w:val="bullet"/>
<w:lvlRestart w:val="0"/>
<w:pStyle w:val="ArticleCL7"/>
<w:lvlText w:val="·"/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:tabs>
<w:tab w:val="num" w:pos="1440"/>
</w:tabs>
<w:ind w:left="1440" w:hanging="720"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/>
<w:b w:val="0"/>
<w:i w:val="0"/>
<w:caps w:val="0"/>
<w:sz w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:lvl>
<w:lvl w:ilvl="7">
<w:start w:val="1"/>
<w:numFmt w:val="bullet"/>
<w:lvlRestart w:val="0"/>
<w:pStyle w:val="ArticleCL8"/>
<w:lvlText w:val="·"/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:tabs>
<w:tab w:val="num" w:pos="2160"/>
</w:tabs>
<w:ind w:left="2160" w:hanging="720"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/>
<w:b w:val="0"/>
<w:i w:val="0"/>
<w:caps w:val="0"/>
<w:sz w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:lvl>
<w:lvl w:ilvl="8">
<w:start w:val="1"/>
<w:numFmt w:val="bullet"/>
<w:pStyle w:val="ArticleCL9"/>
<w:lvlText w:val="·"/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:tabs>
<w:tab w:val="num" w:pos="2880"/>
</w:tabs>
<w:ind w:left="2880" w:hanging="720"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/>
<w:b w:val="0"/>
<w:i w:val="0"/>
<w:caps w:val="0"/>
<w:color w:val="auto"/>
<w:sz w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:lvl>
Hopefully, this means that I can change the w:lvlText w:val="(%3) for w:ilvl="2" using VBA. Still investigating.
Thanks!
Rod
Well, it turns out that you can, indeed, directly modify a multiLevelList style at any level if you know how to refer to it. Using the xml file I referenced, I found that the third level style, ArticleC_L3, had it's number format set to "(%3)" which is what I wanted to change. It was in an abstract with AbstractNumId="93". The following code changes that setting:
wDoc.ListTemplates(94).ListLevels(3).NumberFormat = "%1.%2.%3"
You will notice that the ListTemplates number is one higher, and the ListLevels ID is likewise one higher. In either case, to find the precise place you need to refer to, the best workflow I have found is:
1. In the word doc, click on the number/bullet for the level you are trying to change.
2. Click the little dropdown arrow in the styles box so you can see what the style name is for that level.
3. Look in numbering.xml to see which number style is using that style name. For me the line read <w:pStyle w:val="ArticleCL3"/>
4. Follow the xml tree up to find out what level of the numbering style this is. For me the line read <w:lvl w:ilvl="2">
5. Continue to follow the xml tree up to find out what Template number the level is in. For me the line read <w:abstractNum w:abstractNumId="93" w15:restartNumberingAfterBreak="0">
6. Now you can refer to the exact level format as in the line I shared at the start.
Thanks for eveyone's help!
Rod
Presumably, something based on:
Sub ApplyMultiLevelStyleNumbers()
Dim LT As ListTemplate, i As Long
Set LT = ActiveDocument.ListTemplates.Add(OutlineNumbered:=True)
For i = 1 To 4
With LT.ListLevels(i)
.NumberFormat = Choose(i, "%1", "%1.%2", "%1.%2.%3", "%1.%2.%3.%4")
.Font.Bold = True
.ResetOnHigher = True
.StartAt = 1
.LinkedStyle = "ArticleC_L" & i
End With
Next
End Sub
The above assumes your four styles are named ArticleC_L1 - ArticleC_L4.

What is the best strategy for testing D3/HighCharts/SVG?

Our server generates the data and then the client generates charts using HighCharts which is SVG. We are struggling to write an automated test in order to verify that the generated chart is correct.
This is what the SVG HighCharts generates
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="347" height="450"><desc>Created with Highcharts 3.0.2</desc><defs><clipPath id="highcharts-1"><rect fill="none" x="0" y="0" width="272" height="275"></rect></clipPath></defs><rect rx="5" ry="5" fill="#FFFFFF" x="0" y="0" width="347" height="450"></rect><g class="highcharts-button" style="cursor:default;" title="Chart context menu" stroke-linecap="round" transform="translate(313,10)"><title>Chart context menu</title><rect rx="2" ry="2" fill="white" x="0.5" y="0.5" width="24" height="22" stroke="none" stroke-width="1"></rect><path fill="#E0E0E0" d="M 6 6.5 L 20 6.5 M 6 11.5 L 20 11.5 M 6 16.5 L 20 16.5" stroke="#666" stroke-width="3" zIndex="1"></path><text x="0" y="13" style="font-family:"HelveticaNeue-Roman", "HelveticaNeue", "Helvetica Neue", "Helvetica", "Arial", sans-serif;font-size:12px;color:black;fill:black;" zIndex="1"></text></g><g class="highcharts-grid" zIndex="1"></g><g class="highcharts-grid" zIndex="1"><path fill="none" d="M 65 211.5 L 337 211.5" stroke="#C0C0C0" stroke-width="1" zIndex="1" opacity="1"></path><path fill="none" d="M 65 106.5 L 337 106.5" stroke="#C0C0C0" stroke-width="1" zIndex="1" opacity="1"></path><path fill="none" d="M 65 315.5 L 337 315.5" stroke="#C0C0C0" stroke-width="1" zIndex="1" opacity="1"></path></g><g class="highcharts-axis" zIndex="2"><path fill="none" d="M 142.5 316 L
142.5 321" stroke="#C0D0E0" stroke-width="1" opacity="1"></path><path fill="none" d="M 181.5 316 L 181.5 321" stroke="#C0D0E0" stroke-width="1" opacity="1"></path><path fill="none" d="M 219.5 316 L
219.5 321" stroke="#C0D0E0" stroke-width="1" opacity="1"></path><path fill="none" d="M 258.5 316 L 258.5 321" stroke="#C0D0E0" stroke-width="1" opacity="1"></path><path fill="none" d="M 297.5 316 L
297.5 321" stroke="#C0D0E0" stroke-width="1" opacity="1"></path><path fill="none" d="M 336.5 316 L 336.5 321" stroke="#C0D0E0" stroke-width="1" opacity="1"></path><path fill="none" d="M 103.5 316 L
103.5 321" stroke="#C0D0E0" stroke-width="1" opacity="1"></path><path fill="none" d="M 65.5 316 L 65.5 321" stroke="#C0D0E0" stroke-width="1"></path><text x="201" y="373" style="font-family:Tahoma, Arial, sans-serif;font-size:9pt;color:#505050;font-weight:bold;fill:#505050;" zIndex="7" text-anchor="middle" transform="translate(0,0)" visibility="visible"><tspan x="201">Project</tspan></text><path fill="none" d="M 65 315.5 L 337 315.5" stroke="#505050" stroke-width="1" zIndex="7" visibility="visible"></path></g><g class="highcharts-axis" zIndex="2"><text x="24.9375" y="178" style="font-family:Tahoma, Arial, sans-serif;font-size:9pt;color:#505050;font-weight:bold;fill:#505050;" zIndex="7" text-anchor="middle" transform="translate(0,0) rotate(270
24.9375 178)" visibility="visible"><tspan x="24.9375">Percent Complete (%)</tspan></text></g><g class="highcharts-series-group" zIndex="3"><g class="highcharts-series highcharts-tracker highcharts-tracker highcharts-tracker highcharts-tracker" visibility="visible" zIndex="0.1" transform="translate(65,40) scale(1 1)" style="" clip-path="url(#highcharts-1)"><rect fill="#9F2727" x="3.5" y="275.5" width="31" height="0" stroke="#FFFFFF" stroke-width="1" rx="0" ry="0"></rect><rect fill="#9F2727" x="42.5" y="275.5" width="31" height="0" stroke="#FFFFFF" stroke-width="1" rx="0" ry="0"></rect><rect fill="#9F2727" x="81.5" y="59.5" width="31" height="216" stroke="#FFFFFF" stroke-width="1" rx="0" ry="0"></rect><rect fill="#9F2727" x="120.5" y="144.5" width="31" height="131" stroke="#FFFFFF" stroke-width="1" rx="0" ry="0"></rect><rect fill="#9F2727" x="159.5" y="13.5" width="31" height="262" stroke="#FFFFFF" stroke-width="1" rx="0" ry="0"></rect><rect fill="#9F2727" x="198.5" y="236.5" width="31" height="39" stroke="#FFFFFF" stroke-width="1" rx="0" ry="0"></rect><rect fill="#9F2727" x="237.5" y="72.5" width="31" height="203" stroke="#FFFFFF" stroke-width="1" rx="0" ry="0"></rect></g><g class="highcharts-markers" visibility="visible" zIndex="0.1" transform="translate(65,40) scale(1 1)"></g></g><g class="highcharts-data-labels highcharts-tracker highcharts-tracker highcharts-tracker highcharts-tracker" visibility="visible" zIndex="6" transform="translate(65,40) scale(1 1)" style=""><g zIndex="1" style="cursor:default;" transform="translate(16,256)" visibility="inherit"><text x="3" y="15" style="font-family:"HelveticaNeue-Roman", "HelveticaNeue", "Helvetica Neue", "Helvetica", "Arial", sans-serif;font-size:11px;color:#000000;line-height:14px;fill:#000000;" zIndex="1"></text></g><g zIndex="1" style="cursor:default;" transform="translate(55,256)" visibility="inherit"><text x="3" y="15" style="font-family:"HelveticaNeue-Roman", "HelveticaNeue", "Helvetica Neue", "Helvetica", "Arial", sans-serif;font-size:11px;color:#000000;line-height:14px;fill:#000000;" zIndex="1"></text></g><g zIndex="1" style="cursor:default;" transform="translate(82,40)" visibility="inherit"><text x="3" y="15" style="font-family:"HelveticaNeue-Roman", "HelveticaNeue", "Helvetica Neue", "Helvetica", "Arial", sans-serif;font-size:11px;color:#000000;line-height:14px;fill:#000000;" zIndex="1"><tspan x="3">41%</tspan></text></g><g zIndex="1" style="cursor:default;" transform="translate(121,125)" visibility="inherit"><text x="3" y="15" style="font-family:"HelveticaNeue-Roman", "HelveticaNeue", "Helvetica Neue", "Helvetica", "Arial", sans-serif;font-size:11px;color:#000000;line-height:14px;fill:#000000;" zIndex="1"><tspan x="3">25%</tspan></text></g><g zIndex="1" style="cursor:default;" transform="translate(160,-6)" visibility="inherit"><text x="3" y="15" style="font-family:"HelveticaNeue-Roman", "HelveticaNeue", "Helvetica Neue", "Helvetica", "Arial", sans-serif;font-size:11px;color:#000000;line-height:14px;fill:#000000;" zIndex="1"><tspan x="3">50%</tspan></text></g><g zIndex="1" style="cursor:default;" transform="translate(202,217)" visibility="inherit"><text x="3" y="15" style="font-family:"HelveticaNeue-Roman", "HelveticaNeue", "Helvetica Neue", "Helvetica", "Arial", sans-serif;font-size:11px;color:#000000;line-height:14px;fill:#000000;" zIndex="1"><tspan x="3">8%</tspan></text></g><g zIndex="1" style="cursor:default;" transform="translate(238,53)" visibility="inherit"><text x="3" y="15" style="font-family:"HelveticaNeue-Roman", "HelveticaNeue", "Helvetica Neue", "Helvetica", "Arial", sans-serif;font-size:11px;color:#000000;line-height:14px;fill:#000000;" zIndex="1"><tspan x="3">39%</tspan></text></g></g><g class="highcharts-legend" zIndex="7" transform="translate(94,404)"><rect rx="5" ry="5" fill="#FFFFFF" x="0" y="0" width="158" height="31" visibility="visible"></rect><g zIndex="1"><g><g class="highcharts-legend-item" zIndex="1" transform="translate(8,3)"><text x="21" y="15" style="font-family:Tahoma, Arial, sans-serif;font-size:9pt;cursor:pointer;color:#274b6d;fill:#274b6d;" text-anchor="start" zIndex="2"><tspan x="21">Percent Complete-Sum</tspan></text><rect rx="2" ry="2" fill="#9F2727" x="0" y="4" width="16" height="12" zIndex="3"></rect></g></g></g></g><g class="highcharts-axis-labels" zIndex="7"></g><g class="highcharts-axis-labels" zIndex="7"><text x="57" y="322.3421875" style="font-family:Tahoma, Arial, sans-serif;font-size:8pt;width:116px;color:#666;cursor:default;line-height:14px;fill:#666;" text-anchor="end" opacity="1"><tspan x="57">0</tspan></text><text x="57" y="217.19933035714288" style="font-family:Tahoma, Arial, sans-serif;font-size:8pt;width:116px;color:#666;cursor:default;line-height:14px;fill:#666;" text-anchor="end" opacity="1"><tspan x="57">20%</tspan></text><text x="57" y="112.05647321428572" style="font-family:Tahoma, Arial, sans-serif;font-size:8pt;width:116px;color:#666;cursor:default;line-height:14px;fill:#666;" text-anchor="end" opacity="1"><tspan x="57">40%</tspan></text></g><g class="highcharts-tooltip" zIndex="8" style="cursor:default;padding:0;white-space:nowrap;" visibility="hidden" transform="translate(46,45)" opacity="0"><rect rx="3" ry="3" fill="none" x="0.5" y="0.5" width="182" height="31" fill-opacity="0.85" isShadow="true" stroke="black" stroke-opacity="0.049999999999999996" stroke-width="5" transform="translate(1, 1)"></rect><rect rx="3" ry="3" fill="none" x="0.5" y="0.5" width="182" height="31" fill-opacity="0.85" isShadow="true" stroke="black" stroke-opacity="0.09999999999999999" stroke-width="3" transform="translate(1, 1)"></rect><rect rx="3" ry="3" fill="none" x="0.5" y="0.5" width="182" height="31" fill-opacity="0.85" isShadow="true" stroke="black" stroke-opacity="0.15" stroke-width="1" transform="translate(1, 1)"></rect><rect rx="3" ry="3" fill="rgb(255,255,255)" x="0.5" y="0.5" width="182" height="31" fill-opacity="0.85" stroke="#9F2727" stroke-width="1" anchorX="194.5" anchorY="8"></rect></g></svg>
Our current strategy is to generate the SVG baselines in all browsers, save them, rerun the SVG generation using selenium driver and compare the two XML response naively.
However we noticed that the DPI and the browser heavily affects height and width of the svg, which makes the tests brittle. We also tried taking screenshots of the two charts and comparing however it was very resolution dependent.
Currently we complement the UI tests with unit tests that makes sures the input to highcharts is correct, but we want to make sure we cover all the bases.
Please help us determine the correct strategy to test SVG elements generated by libraries like highcharts and d3.js.
Thank you very much.
I think you're on the right path, using Selenium to verify the dimensions of the various elements of the chart. The key is to verify their relative dimensions compared to the <svg>'s size, maybe allowing a small margin of error, and not their absolute ones.

Table border and caption issue for PDF generation in docx4j

I'm having an issue with getting the table caption and border to output in PDF. I'm using docx4j 3.0.0 but I also had the same issue with 2.8.1.
I have a xhtml fragment generated by TinyMCE. I do some processing to get it the way docx4j wants it, and convert it to openXML using XHTMLImporterImpl.
I use the marshaller to get the docx format working and Docx4j.toPDF for the pdf format.
It works for most cases, italics, underline, bold, alignment, images, etc.
When it comes to table caption and border, it works in the docx format, but not the PDF format. It simply excludes the table with these properties. I think xhtml -> openXML is working properly, but the Docx4j.toPDF is not supporting these properties or something. I tried searching the web with no luck. I was wondering if someone already knew about this.
The error I get is
java.lang.StringIndexOutOfBoundsException: String index out of range: 9
at java.lang.String.substring(String.java:1907)
at org.apache.fop.fo.expr.PropertyTokenizer.nextColor(PropertyTokenizer.java:239)
at org.apache.fop.fo.expr.PropertyTokenizer.next(PropertyTokenizer.java:175)
at org.apache.fop.fo.expr.PropertyParser.parseProperty(PropertyParser.java:118)
at org.apache.fop.fo.expr.PropertyParser.parse(PropertyParser.java:91)
at org.apache.fop.fo.properties.PropertyMaker.make(PropertyMaker.java:438)
at org.apache.fop.fo.PropertyList.convertAttributeToProperty(PropertyList.java:413)
at org.apache.fop.fo.PropertyList.addAttributesToList(PropertyList.java:321)
at org.apache.fop.fo.FObj.processNode(FObj.java:122)
at org.apache.fop.fo.flow.table.TableFObj.processNode(TableFObj.java:232)
...
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: Exception exporting package
at org.docx4j.convert.out.common.AbstractExporter.export(AbstractExporter.java:79)
at org.docx4j.Docx4J.toFO(Docx4J.java:467)
at org.docx4j.Docx4J.toPDF(Docx4J.java:477)
The openXML looks like this for the table
<w:tbl>
<w:tblPr>
<w:tblW w:w="0" w:type="auto"/>
<w:tblCellSpacing w:w="20" w:type="dxa"/>
<w:tblInd w:w="115" w:type="dxa"/>
<w:tblBorders>
<w:top w:val="inset" w:color="#000000" w:sz="8"/>
<w:left w:val="inset" w:color="#000000" w:sz="8"/>
<w:bottom w:val="inset" w:color="#000000" w:sz="8"/>
<w:right w:val="inset" w:color="#000000" w:sz="8"/>
<w:insideH w:val="none"/>
<w:insideV w:val="none"/>
</w:tblBorders>
</w:tblPr>
<w:tblGrid>
<w:gridCol w:w="1045"/>
<w:gridCol w:w="903"/>
</w:tblGrid>
<w:tr>
<w:tc>
<w:tcPr>
<w:tcW w:w="1045" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="outset" w:color="#000000" w:sz="8"/>
<w:left w:val="outset" w:color="#000000" w:sz="8"/>
<w:bottom w:val="outset" w:color="#000000" w:sz="8"/>
<w:right w:val="outset" w:color="#000000" w:sz="8"/>
</w:tcBorders>
</w:tcPr>
<w:p>
<w:pPr>
<w:spacing w:after="0"/>
<w:ind w:left="0"/>
<w:jc w:val="left"/>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:i w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="22"/>
</w:rPr>
<w:t>Col 1</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="903" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="outset" w:color="#000000" w:sz="8"/>
<w:left w:val="outset" w:color="#000000" w:sz="8"/>
<w:bottom w:val="outset" w:color="#000000" w:sz="8"/>
<w:right w:val="outset" w:color="#000000" w:sz="8"/>
</w:tcBorders>
</w:tcPr>
<w:p>
<w:pPr>
<w:spacing w:after="0"/>
<w:ind w:left="0"/>
<w:jc w:val="left"/>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:i w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="22"/>
</w:rPr>
<w:t>Col2</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
<w:tr>
<w:tc>
<w:tcPr>
<w:tcW w:w="1045" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="outset" w:color="#000000" w:sz="8"/>
<w:left w:val="outset" w:color="#000000" w:sz="8"/>
<w:bottom w:val="outset" w:color="#000000" w:sz="8"/>
<w:right w:val="outset" w:color="#000000" w:sz="8"/>
</w:tcBorders>
</w:tcPr>
<w:p>
<w:pPr>
<w:spacing w:after="0"/>
<w:ind w:left="0"/>
<w:jc w:val="left"/>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:i w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="22"/>
</w:rPr>
<w:t>Row1</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="903" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="outset" w:color="#000000" w:sz="8"/>
<w:left w:val="outset" w:color="#000000" w:sz="8"/>
<w:bottom w:val="outset" w:color="#000000" w:sz="8"/>
<w:right w:val="outset" w:color="#000000" w:sz="8"/>
</w:tcBorders>
</w:tcPr>
<w:p>
<w:pPr>
<w:spacing w:after="0"/>
<w:ind w:left="0"/>
<w:jc w:val="left"/>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:i w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="22"/>
</w:rPr>
<w:t>table</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
</w:tbl>
I think there's a bug with the default border color going in as #000000 instead of 000000. Is there a workaround by pre-processing the xhtml?
duplicates question http://www.docx4java.org/forums/pdf-output-f27/tabl-caption-and-border-issue-docx4j-3-0-0-t1763.html
I'll update both when answered

Selenium Webdriver - Validate a value in tooltip for a section (bar) of a bar chart

I need to validate the value of the margin (sum) element from the bar chart as shown below. So how do I extract the value 31732 from margin (sum) tooltip for Electrolux vendor (bar 1) in the bar chart?
The html for the div enclosing this value is also given below.
I would appreciate any help to point me in the right direction.
Thanks in advance.
<div id="highcharts-60" class="highcharts-container" style="position: relative; overflow: hidden; width: 727px; height: 378px; text-align: left; font-family: "Lucida Grande","Lucida Sans Unicode",Verdana,Arial,Helvetica,sans-serif; font-size: 12px; left: 0px; top: -0.600006px;">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="727" height="378">
<defs>
<rect rx="5" ry="5" fill="#FFFFFF" x="0" y="0" width="727" height="378" stroke-width="0" stroke="#4572A7">
<text class="highcharts-title" x="364" y="25" style="font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;font-size:10px;color:#3E576F;fill:#3E576F;" text-anchor="middle" zIndex="1">
<g class="highcharts-grid" zIndex="1">
<g class="highcharts-grid" zIndex="1">
<path d="M 106.5 40 L 106.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 147.5 40 L 147.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 187.5 40 L 187.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 228.5 40 L 228.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 269.5 40 L 269.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 310.5 40 L 310.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 350.5 40 L 350.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 391.5 40 L 391.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 432.5 40 L 432.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 473.5 40 L 473.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 513.5 40 L 513.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 554.5 40 L 554.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 595.5 40 L 595.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 636.5 40 L 636.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 676.5 40 L 676.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
<path d="M 717.5 40 L 717.5 291" fill="none" stroke="#C0C0C0" stroke-width="1">
</g>
<g class="highcharts-series-group" zIndex="3">
<g class="highcharts-series" width="611" height="251" transform="translate(717,291) rotate(90) scale(-1,1)" clip-path="url(https://staging.datarpm.com/analytics/4fbf89e5e4b0a97336652433#highcharts-61)" visibility="visible">
<rect rx="0" ry="0" fill="none" x="220.5" y="352.5" width="18" height="258" stroke-width="5" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.05" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="none" x="220.5" y="352.5" width="18" height="258" stroke-width="3" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.1" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="none" x="220.5" y="352.5" width="18" height="258" stroke-width="1" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.15000000000000002" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="#4572A7" x="220.5" y="352.5" width="18" height="258" stroke-width="1" stroke="#FFFFFF" r="0" fill-opacity="1">
<rect rx="0" ry="0" fill="none" x="178.5" y="319.5" width="18" height="291" stroke-width="5" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.05" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="none" x="178.5" y="319.5" width="18" height="291" stroke-width="3" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.1" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="none" x="178.5" y="319.5" width="18" height="291" stroke-width="1" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.15000000000000002" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="#4572A7" x="178.5" y="319.5" width="18" height="291" stroke-width="1" stroke="#FFFFFF" r="0" fill-opacity="1">
<rect rx="0" ry="0" fill="none" x="136.5" y="293.5" width="18" height="317" stroke-width="5" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.05" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="none" x="136.5" y="293.5" width="18" height="317" stroke-width="3" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.1" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="none" x="136.5" y="293.5" width="18" height="317" stroke-width="1" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.15000000000000002" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="#4572A7" x="136.5" y="293.5" width="18" height="317" stroke-width="1" stroke="#FFFFFF" r="0" fill-opacity="1">
<rect rx="0" ry="0" fill="none" x="94.5" y="62.5" width="18" height="548" stroke-width="5" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.05" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="none" x="94.5" y="62.5" width="18" height="548" stroke-width="3" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.1" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="none" x="94.5" y="62.5" width="18" height="548" stroke-width="1" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.15000000000000002" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="#4572A7" x="94.5" y="62.5" width="18" height="548" stroke-width="1" stroke="#FFFFFF" r="0">
<rect rx="0" ry="0" fill="none" x="52.5" y="257.5" width="18" height="353" stroke-width="5" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.05" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="none" x="52.5" y="257.5" width="18" height="353" stroke-width="3" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.1" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="none" x="52.5" y="257.5" width="18" height="353" stroke-width="1" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.15000000000000002" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="#4572A7" x="52.5" y="257.5" width="18" height="353" stroke-width="1" stroke="#FFFFFF" r="0">
<rect rx="0" ry="0" fill="none" x="10.5" y="247.5" width="18" height="363" stroke-width="5" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.05" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="none" x="10.5" y="247.5" width="18" height="363" stroke-width="3" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.1" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="none" x="10.5" y="247.5" width="18" height="363" stroke-width="1" stroke="rgb(0, 0, 0)" r="0" isShadow="true" stroke-opacity="0.15000000000000002" transform="translate(-1,-1)">
<rect rx="0" ry="0" fill="#4572A7" x="10.5" y="247.5" width="18" height="363" stroke-width="1" stroke="#FFFFFF" r="0">
</g>
</g>
<g class="highcharts-legend" zIndex="7" transform="translate(298,337)">
<rect rx="5" ry="5" fill="none" x="0.5" y="0.5" width="130" height="25" stroke-width="1" stroke="#909090" visibility="visible">
<text x="30" y="18" style="font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;font-size:12px;cursor:pointer;color:#3E576F;fill:#3E576F;" zIndex="2">
<tspan x="30"> margin (sum)</tspan>
</text>
<rect rx="2" ry="2" fill="#4572A7" x="9.5" y="7.5" width="16" height="12" stroke-width="1" zIndex="3" stroke="#FFFFFF" r="0">
</g>
<g class="highcharts-axis" zIndex="7">
<text x="26" y="165.5" style="font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;font-size:12px;color:#6D869F;font-weight:bold;fill:#6D869F;" zIndex="7" transform="rotate(270 26 165)" text-anchor="middle">
<g class="highcharts-axis" zIndex="7">
<text x="411.5" y="323" style="font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;font-size:12px;color:#6D869F;font-weight:bold;fill:#6D869F;" zIndex="7" text-anchor="middle">
<tspan x="411.5"> margin (sum)</tspan>
</text>
<path d="M 106.5 40 L 106.5 291" fill="none" stroke="#C0D0E0" stroke-width="1" zIndex="7">
<g class="highcharts-tooltip" zIndex="8" visibility="hidden" transform="translate(202.5577832333554,26.04093567342961)">
<rect rx="5" ry="5" fill="none" x="7" y="7" width="131" height="38" stroke-width="5" fill-opacity="0.85" isShadow="true" stroke="rgb(0, 0, 0)" stroke-opacity="0.05" transform="translate(1,1)">
<rect rx="5" ry="5" fill="none" x="7" y="7" width="131" height="38" stroke-width="3" fill-opacity="0.85" isShadow="true" stroke="rgb(0, 0, 0)" stroke-opacity="0.1" transform="translate(1,1)">
<rect rx="5" ry="5" fill="none" x="7" y="7" width="131" height="38" stroke-width="1" fill-opacity="0.85" isShadow="true" stroke="rgb(0, 0, 0)" stroke-opacity="0.15000000000000002" transform="translate(1,1)">
<rect rx="5" ry="5" fill="rgb(255,255,255)" x="7" y="7" width="131" height="38" stroke-width="2" fill-opacity="0.85" stroke="#4572A7">
<text x="12" y="24" style="font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;font-size:12px;color:#333333;padding:0;white-space:nowrap;fill:#333333;" zIndex="1">
<tspan style="text-decoration: underline; font-weight: bold;" x="12">Electrolux</tspan>
<tspan style="font-weight:bold" dy="13" x="12"> margin (sum)</tspan>
<tspan dx="3"> : 31732</tspan>
</text>
</g>
<g class="highcharts-tracker" zIndex="9" transform="translate(717,291) rotate(90) scale(-1,1)" width="611" height="251">
<rect rx="3" ry="3" fill="url(https://staging.datarpm.com/analytics/4fbf89e5e4b0a97336652433#highcharts-62)" x="0.5" y="0.5" width="23" height="19" stroke-width="1" transform="translate(693,348)" zIndex="19" stroke="#B0B0B0">
<rect rx="3" ry="3" fill="url(https://staging.datarpm.com/analytics/4fbf89e5e4b0a97336652433#highcharts-63)" x="0.5" y="0.5" width="23" height="19" stroke-width="1" transform="translate(693,328)" zIndex="19" stroke="#B0B0B0">
<path d="M 6 17 L 18 17 18 14 6 14 Z M 12 14 L 9 9 11 9 11 5 13 5 13 9 15 9 Z" fill="#A8BF77" transform="translate(693,348)" stroke="#A0A0A0" stroke-width="1" zIndex="20">
<path d="M 6 14 L 18 14 18 9 6 9 Z M 9 9 L 9 5 15 5 15 9 Z M 9 14 L 7.5 17 16.5 17 15 14 Z" fill="#B5C9DF" transform="translate(693,328)" stroke="#A0A0A0" stroke-width="1" zIndex="20">
<rect rx="0" ry="0" fill="rgb(255,255,255)" x="693" y="348" width="24" height="20" stroke-width="0" fill-opacity="0.001" title="Export to raster or vector image" zIndex="21" style="cursor:pointer;">
<rect rx="0" ry="0" fill="rgb(255,255,255)" x="693" y="328" width="24" height="20" stroke-width="0" fill-opacity="0.001" title="Print the chart" zIndex="21" style="cursor:pointer;">
</svg>
</div>
I assume, that are not testing the highcharts themselves, but only that the correct data is passed to it. Since testing whether the data is visualized correctly would be highcharts's responsibility.
If in JavaScript chart has been assign to a variable (e.g. var chart = new Highcharts.Chart({ ... })), then you can try to get the data by calling the highcharts series data api
int[] data = js.executeScript("return chart.series.data;");
If that doesn't work, then you can always extract the data from the html like this:
//get the element that contains the data
WebElement currentValueElement = driver.findElement(By.xpath('//*[#class="highcharts-tooltip"]//text/tspan[last()]'));
//get the value from that element
int currentvalue = Integer.parseInt(currentValueElement.split(":")[1].trim())
From what I see, the tooltip might be a dynamic Javascript popup like you see with some dropdown menus such as Google search tips. You are the only person to have access to the FULL source (HTML headers) and so only you can figure that out for us. That being the case, if you are desparate, you can use a physical mouse click (using Webdriver Action class) combined with a slight delay and some keystrokes to select and copy (with ctrl-c ) and then access the clipboard with java.awt.Toolkit to get the value and then process it. This is just off the top of my head.
There may be better ways of doing this than what I suggest above. Alternatively, it's very possible that the DOM has access to the values of that tooltip (where you can use a cssSelector to get) but without having access to you page with Firebug (using Firefinder plugin), its hard to tell.
did you try using this xpath and getting text from it?
"//tspan[#dx='3']"